我有一个使用simpleAdapter构建的列表视图,每行由包含TableRow和一些TextView的Layout定义。
如何知道单击哪个TextView(在布局中)?
如果我在Listview上使用OnItemClickListener,我可以获取listview行(位置),但它不会告诉我该行上的哪个TextView被点击。
我想采取不同的操作,具体取决于用户在列表视图中单击的TextView
listview
-----------------------
TextView1 : TextView2 | <--Row1
-----------------------
TextView1 : TextView2 | <--Row2
-----------------------
TextView1 | TextView2 | <--Row3
-----------------------
我希望能够说明,第2行的TextView2是点击的。
希望我能够很好地解释自己。
谢谢你
答案 0 :(得分:4)
您可以在列表活动中使用以下代码
setListAdapter(new ArrayAdapter<String>(this, R.layout.your name, String Name));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
答案 1 :(得分:1)
如果onItemClick
正在处理点击,那么您无法从中了解View
点击了View
。 OnItemClickListener
只处理单击列表项。您可以尝试使用自定义adapter
,其中您抓住getView()
中行中的所有视图,并在其上设置onClickListeners
。或者,如果可能,您可以直接在onClickListeners
课程中定义View
。
答案 2 :(得分:0)
您可以在Adapter中处理不同视图的点击。必须自定义适配器
答案 3 :(得分:0)
我需要做类似的事情以在列表视图中的元素上设置标签,以便可以找到单击了哪个按钮
return
我为布局中的每个项目添加了一个onClick事件
myAdapter = new SimpleAdapter(this, myArrayList, R.layout.list_item,
new String[] {"ItemID", "ItemText", "ItemImage"},
new int[] {R.id.item_id, R.id.item_text, R.id.item_image})
{
@Override
public View getView (int row, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.findViewById(R.id.item_id).setTag(row);
view.findViewById(R.id.item_text).setTag(row);
view.findViewById(R.id.item_image).setTag(row);
return view;
}
};
然后在我的onClick事件中,我有类似的东西
<TextView
...
android:clickable="true"
android:onClick="myClickEvent"
...
/>
您可以对视图中的每个项目使用一个onClick事件来确定单击了哪个项目,也可以对所有项目使用一个onClick事件,然后修改标记以同时包含该项目和该行。