我有自定义ListView
。此ListView
包含1 图像和6 TextView 。要检索我创建的值setOnItemClickListener(...)
。每当我点击ListView
,我怎样才能真正从6 TextView 中检索所有数据?
答案 0 :(得分:57)
示例代码:
ListView list = (ListView) findViewById(R.id.listview);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object listItem = list.getItemAtPosition(position);
}
});
在上面的示例代码中,listItem
应包含textView
的所选数据。
答案 1 :(得分:12)
我也有同样的问题.. 如果我们从逻辑上思考一下,我们就能得到答案。 它对我很有用.. 我希望你能得到它..
listviewdemo.xml
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="30dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" />
listviewcontent.xml
- 请注意TextView
- android:id="@+id/txtLstItem"
<LinearLayout
android:id="@+id/listviewcontentlayout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageView
android:id="@+id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dp" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/txtLstItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:shadowColor="@android:color/black"
android:shadowRadius="5"
android:textColor="@android:color/white" />
</LinearLayout>
<ImageView
android:id="@+id/img2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dp" />
</LinearLayout>
ListViewActivity.java
- 请注意 view.findViewById(R.id.txtLstItem)
-
当我们通过TextView
方法将值设置为setText()
时,我们会从TextView
通过View
方法返回的onItemClick
对象获取文本。 OnItemClick()
返回当前视图。
TextView v=(TextView) view.findViewById(R.id.txtLstItem);
Toast.makeText(getApplicationContext(), "selected Item Name is "+v.getText(), Toast.LENGTH_LONG).show();**
使用这个简单的逻辑,我们可以获得其他值,例如CheckBox
,RadioButton
,ImageView
等。
ListView List = (ListView) findViewById(R.id.listview);
cursor = cr.query(CONTENT_URI,projection,null,null,null);
adapter = new ListViewCursorAdapter(ListViewActivity.this, R.layout.listviewcontent, cursor, from, to);
cursor.moveToFirst();
// Let activity manage the cursor
startManagingCursor(cursor);
List.setAdapter(adapter);
List.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick (AdapterView < ? > adapter, View view,int position, long arg){
// TODO Auto-generated method stub
TextView v = (TextView) view.findViewById(R.id.txtLstItem);
Toast.makeText(getApplicationContext(), "selected Item Name is " + v.getText(), Toast.LENGTH_LONG).show();
}
}
);
答案 2 :(得分:2)
如果在收听者中你获得了项目的根布局(比如itemLayout
),并且你给了文本视图一些id,那么你可以使用类似itemLayout.findViewById(R.id.textView1)
的内容来获取它们。
答案 3 :(得分:2)
如果它对任何人有帮助,我发现问题是我的布局文件中已经有一个android:onClick事件(我为ListView行充气)。这取代了onItemClick事件。
答案 4 :(得分:1)
如果以上答案不起作用,您可能没有在自定义适配器的getItem方法中添加返回值,请参阅this问题并查看第一个答案。
答案 5 :(得分:0)
很抱歉使用Kotlin进行编码。 但是我面临着同样的问题。 我用下面的代码解决了。
list.setOnItemClickListener{ _, view, _, _ ->
val text1 = view.find<TextView>(R.id.~~).text
}
您可以在“ ~~”中放置一个显示所需TextView的ID。
希望它将对某人有所帮助!