Android Listview simpleadapter onClick,如何查找哪个视图是clickon?

时间:2012-01-20 04:36:08

标签: android onclick textview simpleadapter

我有一个使用simpleAdapter构建的列表视图,每行由包含TableRow和一些TextView的Layout定义。

如何知道单击哪个TextView(在布局中)?

如果我在Listview上使用OnItemClickListener,我可以获取listview行(位置),但它不会告诉我该行上的哪个TextView被点击。

我想采取不同的操作,具体取决于用户在列表视图中单击的TextView

listview

-----------------------
TextView1 : TextView2 |     <--Row1
-----------------------
TextView1 : TextView2 |     <--Row2
-----------------------
TextView1 | TextView2 |     <--Row3
-----------------------

我希望能够说明,第2行的TextView2是点击的。

希望我能够很好地解释自己。

谢谢你

4 个答案:

答案 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点击了ViewOnItemClickListener只处理单击列表项。您可以尝试使用自定义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事件,然后修改标记以同时包含该项目和该行。