2013-01-18 21 views
8

、私は以下のコードを持つリストビューアダプタ位置からオブジェクトの値を取得する方法:私はMyLogでlogcatでそれをログ見ればアダプタの位置から値を取得する方法

CategoriesXmlParser categoryXmlParser = new CategoriesXmlParser(); 
List<HashMap<String, Object>> categories = null; 

try { 
    categories = categoryXmlParser.parse(reader); 
} catch (Exception e) { 
    Log.d("Exception", e.toString()); 
} 

String[] from = { "name", "image" }; 
int[] to = { R.id.nama_category, R.id.logo_category }; 

final SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), 
        categories, R.layout.per_item_category, from, to); 

mListView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
    Object obj = mListView.getAdapter().getItem(position); 
    String value = obj.toString(); 
    Log.d("MyLog", "Value is: "+value); 
    String name = // how code to get name value. 
    } 
}); 

私はのように得る:

値は{位置= 12、 IMAGE_PATH = http://192.168.103.121/xml/icon.png、 リンク= http://192.168.103.121/xml/category.php?kat_id=13、名前=カテゴリ 13}

私の質問は、私は名前から値を取得し、変数の文字列名に格納したい、私はちょうど "カテゴリ13"の文字列名にしたい。私はそれを別のアクティビティに渡したいからです。

+0

まあ、どのオブジェクトタイプでアダプタを埋めますか?単に 'getItem()'の結果をそれにキャストし、実装したアクセサを使用して 'name'フィールドの値を取得することができます。 –

答えて

31

blablabla.put( "name"、 "value")などのハッシュマップでオブジェクトを作成したようですか?そうであれば。

mListView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
     Object obj = mListView.getAdapter().getItem(position); 
     String value = obj.toString(); 
     Log.d("MyLog", "Value is: "+value); 
     String name = // how code to get name value. 
    } 
}); 

変更:これを試してみてください

mListView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     HashMap<String, Object> obj = (HashMap<String, Object>) adapter.getItem(position); 
      String name = (String) obj.get("name"); 
      Log.d("Yourtag", name); 
    } 
}); 
+1

ありがとうAndi Unpam。この動的データ用の作業です。だから私はちょうどアイテムを取得します。うーん、それはハッシュマップを使用しています。確かにこれは私が使用している別のコードからです。私はもう科学、つまりハッシュマップを追加しました。ありがとう... –

+1

その作業! thx –

+0

awesome answer .. –

6
value = value.substring(value.indexOf("name=")+5,value.length()-1); 
+1

補正値= value.substring(value.indexOf( "name =")+ 5、value.length() - 1); – Pragnani

+0

さて、Sugandha、Pragnani、RobinHoodに感謝しました。私の問題は最後の文字列の前に訂正Pragniで解決されました}。ありがとう。 –

+0

私の質問+5は何ですか?私はこの機能の未来を知っています。ありがとう –

0

あなたはまた、AdapterView<?> parent

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //setHasOptionsMenu(true); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      final Filedata mnotes = (Filedata) parent 
        .getItemAtPosition(position); 
      Toast.makeText(getActivity(), Filedata.getName(),Toast.LENGTH_SHORT).show(); 
}); 
} 
2
listID.setOnItemClickListener(new AdapterView.OnItemClickListener() 
       { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View v, 
          int position, long id) { 
         // TODO Auto-generated method stub 

         Object obj=listID.getAdapter().getItem(position); 
         String str=obj.toString(); 

        Toast.makeText(MainActivity.this, "Item is= "+str, Toast.LENGTH_LONG).show(); 
        } 
       }); 
+0

このコードは、結果を得るのに役立つかもしれません –

+0

リストに元のIDを取得する方法はありますか?私が得るのは、文字列中のものの名前だけです。前もって感謝します – Riekelt

0

経由アダプタデータを取得することができますこれは私がやったことです: -

lvHomePage.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
         Transaction selectedFromList =(Transaction)parent.getAdapter().getItem(position); 
         Log.d("val:",selectedFromList.getDate()); 
         Log.d("val:",selectedFromList.getMobile_no()); 
        } 
       }); 

楽しんでください!

関連する問題