

Androidアプリを作っているのですが自分でカスタムしたListViewから任意の場所の任意の項目だけを取り出す方法がわからず困っています。

**_item.xml_**

[code]

    <TextView
        android:id="@+id/id_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp" />
    
    <TextView
        android:id="@+id/name_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <TextView
        android:id="@+id/relation_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <TextView
        android:id="@+id/date_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <TextView
        android:id="@+id/place_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
[/code]

**_activity_main.xml_**

[code]

        <ListView
             android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawSelectorOnTop="false"
            android:layout_weight="1" >
        </ListView>
    
[/code]

**_MainActivityの一部_**

[code]

    @Override
        protected void onResume() {
            super.onResume();
            setContentView(R.layout.activity_main);
            SQLiteDatabase db=helper.getReadableDatabase();
    
            ListView listView1 = (ListView)findViewById(R.id.listView);
    
            //DBを取得
            cursor=db.query("persons",null, null, null, null, null, null);
            cursor.moveToFirst();
    
            listView1.setAdapter(new SimpleCursorAdapter(this,R.layout.item,cursor,new String[]{
                    "_id","name","relation","date","place"},new int[]{R.id.id_item,R.id.name_item,R.id.relation,R.id.date_item,R.id.place_item},0));
    
            listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
    
                }
    
            });
    
        }
    
[/code]

ここでListViewがクリックされた際にR.id.id_itemに入っている内容を取り出し、変数に代入したいのですが任意のpositionのListView内のTextViewの内容を取り出す方法が分かりません。どのようにすればよいのでしょうか。  
これまではposisionの位置にcursor.moveToPosition(position)で移動していたのですがこれだとListViewを並び替えた際に使えないことがわかってしまい困っています。


CC BY-SA 3.0
2016-11-06T01:02:29.637
30127
2016-11-08T13:19:49.470
2016-11-06T18:21:44.453
17321
19447
question
android java
複数項目が入っているListViewから任意の項目だけを取り出したい


Cursorで項目を取り出すのために`cursor.getColumnIndex("name")`を使います：

[code]

    String currentId = cursor.getString(cursor.getColumnIndex("_id"));
    String currentName = cursor.getString(cursor.getColumnIndex("name"));
    
[/code]

例えば：

[code]

    listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
            String currentId = cursor.getString(cursor.getColumnIndex("_id"));
            String currentName = cursor.getString(cursor.getColumnIndex("name"));
            Log.v(TAG, "クリックid/name は : " + currentId + " => " + currentName);
    
        }
    
    });
    
[/code]


CC BY-SA 3.0
2016-11-06T15:59:07.027
30155
2016-11-06T15:59:07.027
17321
30127
answer


もし、click された item の TextView から取得するのが良いということでしたら、  
`onItemClick()` の引数 `view` にその item の view が渡されてきていますので、

[code]

    TextView textView = (TextView) view.findViewById(R.id.id_item);
    String text = (String) textView.getText();
    
[/code]

でいかがでしょうか。


CC BY-SA 3.0
2016-11-08T13:19:49.470
30217
2016-11-08T13:19:49.470
5288
30127
answer