我有一个在每行中都有文本和按钮的列表视图,列表视图setOnItemClickListener()不起作用。是否可以以不同的方式处理项目单击和按钮单击事件(项目单击应调用ActivityA,按钮单击应调用ActivityB)。有没有人有办法解决吗 private ArrayList<String> userIDArr = null; private ArrayList<String> userNameArr = null; private DatabaseHelper dbHelper = null; private ListView userListView=null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_view); dbHelper = new DatabaseHelper(this.getApplicationContext()); Map<String,ArrayList<String>> displayMap = dbHelper.getUserListToDisplay(); userIDArr = displayMap.get("UserID"); userNameArr = displayMap.get("FirstName1"); userListView = (ListView) findViewById(R.id.listView2); userListView.setAdapter(new UserListAdapter(this,userIDArr)); userListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Toast.makeText(usersListActivity.this, "Item in position " + position + " clicked", Toast.LENGTH_LONG).show(); } }); } public class UserListAdapter extends ArrayAdapter<String> { Activity context; public UserListAdapter(Activity context, ArrayList<String> names) { super(context, R.layout.list_item, names); this.context = context; } private class ViewHolder { public TextView UserNameAndID; public TextView Description; public Button UploadBtn; }
4 回答
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
扬帆大鱼
TA贡献1799条经验 获得超9个赞
尝试像这样设置按钮(或要处理的其他视图单击列表项):
android:focusable="false"
android:focusableInTouchMode="false"
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
有时,列表仍将无法使Click Listener通过。在这种情况下,您可能必须再添加一个属性。
android:descendantFocusability="blocksDescendants"
并且必须将此属性添加到提供ListView元素的XML的最顶层布局中。
![?](http://img1.sycdn.imooc.com/54586653000151cd02200220-100-100.jpg)
守着一只汪
TA贡献1872条经验 获得超3个赞
如果您的列表视图中有一个活动视图/可聚焦视图,则它将禁用onItemClickListener
...,您可以通过android:focusable="false"
在任何通常可聚焦的视图上添加:来使其变为不可 聚焦。
- 4 回答
- 0 关注
- 1084 浏览
添加回答
举报
0/150
提交
取消