我使用的是自定义的ListView与RatingBar和ImageButton.这是我的问题:当我点击我的时候ListView,我OnItemClickListener的工作无效.请任何人帮助我.码:
ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Sha*_*aaz 115
虽然这是一个非常古老的问题,但我仍然会发布一个答案,以便它可以帮助一些人.如果您在列表视图中使用任何布局,请使用...
android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)
...在列表中的第一个父布局上.这就像魔术一样,点击不会被列表中的任何元素占用,而是直接转到列表项.
小智 17
嘿检查这个,对我有用...希望它对你也有效
如果列表项包含 ImageButton
问题:OnItemClickListener根本没有任何反响!
理由:不知道
解决方案:在代码中,将ImageButton焦点设置为“false”
1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
2: button.setFocusable(false);
pos*_*ssy 15
我有一个扩展ListActivity的Activity.
我尝试在onCreate中做这样的事情:
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("Hello!", "Y u no see me?");
}
});
Run Code Online (Sandbox Code Playgroud)
但那没用.
相反,我只需要覆盖onListItemClick:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.i("Hello!", "Clicked! YAY!");
}
Run Code Online (Sandbox Code Playgroud)
Rah*_*ari 10
如果要在列表视图中启用项目单击,请使用
listitem.setClickable(false);
Run Code Online (Sandbox Code Playgroud)
乍一看这看起来可能不对,但它确实有效!
RVG*_*RVG 10
如果列表项视图包含按钮或复选框或图像按钮,则onitemclicklistener和onitemlongclicklistener无法正常工作,因为它具有自己的onclick侦听器.
将焦点设置为false
holder.button.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)
1)检查您是否使用OnItemClickListener或OnClickListener(ListView不支持)
文档Android开发人员ListView
2)检查是否正确地将Listener添加到ListView.它挂在ListView而不是ListAdapter上!
ListView.setOnItemClickListener(listener);
Run Code Online (Sandbox Code Playgroud)
3)如果您需要使用OnClickListener,请检查您是否使用DialogInterface.OnClickListener或View.OnClickListener(如果未经验证或使用这两者,则可以轻松交换)
小智 5
listPaired = (ListView) findViewById( R.id.listView1 );
listPairedData = new ArrayList < String >();
araPaired = new ArrayAdapter( this, android.R.layout.simple_list_item_1, listPairedData );
listPaired.setAdapter( araPaired );
listPaired.setOnItemClickListener( listPairedClickItem );
private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > arg0, View arg1, int arg2, long arg3) {
String info = ( (TextView) arg1 ).getText().toString();
Toast.makeText( getBaseContext(), "Item " + info, Toast.LENGTH_LONG ).show();
}
};
Run Code Online (Sandbox Code Playgroud)
您也可以使用lambda。Java 1.7或更早版本的JVM不支持Lambda语法。
listView.setOnItemClickListener((parent, view, position, id) -> {
...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
215011 次 |
| 最近记录: |