Android 带有MClickListener的ListView
我正在使用自定义的Android 带有MClickListener的ListView,android,listview,Android,Listview,我正在使用自定义的分级栏和图像按钮。这是我的问题:当我点击我的列表视图时,我的监听器不工作。谁能帮我一下吗。 代码: ListView lv=getListView(); setContentView(lv); lv.setOnItemClickListener(新的OnItemClickListener(){ @凌驾 public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){ Toast.makeText(SuggestionActivity.t
分级栏
和图像按钮
。这是我的问题:当我点击我的列表视图时,我的监听器
不工作。谁能帮我一下吗。
代码:
ListView lv=getListView();
setContentView(lv);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
Toast.makeText(SuggestionActivity.this,“+位置,Toast.LENGTH_SHORT).show();
}
});
1)检查您使用的是OnItemClickListener还是OnClickListener(ListView不支持该选项)
2) 检查是否已将侦听器正确添加到ListView。它挂在ListView上,而不是ListAdapter上
ListView.setOnItemClickListener(listener);
3) 如果您需要使用OnClickListener,请检查您是否使用了DialogInterface.OnClickListener
或View.OnClickListener(如果未验证或同时使用这两个选项,它们可以很容易地进行交换)可将Clickable设置为false to ImageButton,如下所示
imagebutton.setClickable(false);
然后对listview执行
OnItemClickListener
。您正在使用的列表视图中是否有和图像>
然后点击链接:
我想当你在我首先提供的链接上工作时,一切都会很好,我已经尝试过了。如果你想要一个精确的答案,请用代码和描述详细说明问题 嘿,看看这个,对我有用。。。希望它对你也有用 如果列表项包含
ImageButton
问题:OnItemClickListener
根本不响应任何消息
原因:不知道
解决方案:在代码中,将ImageButton
的焦点设置为“false”
1:ImageButton按钮=(ImageButton)convertView.findViewById(R.id.ImageButton)代码>
2:按钮。设置焦点(false)代码>如果要启用项目,请在列表视图中单击“使用”
listitem.setClickable(false);
乍一看,这似乎是错误的,但它是有效的 虽然这是一个非常古老的问题,但我仍在发布答案,以便对某些人有所帮助。
如果在列表视图中使用任何布局,请使用
android:descendantFocusability="blocksDescendants"
。。。在列表中的第一个父布局上。这就像魔术一样,单击不会被列表中的任何元素消耗,而是直接进入列表项 我有一个扩展ListActivity的活动
我在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?");
}
});
如果列表项视图包含按钮、复选框或imagebutton,
OnItemClick侦听器和onitemlongclicklistener无法工作,因为它有自己的onclick侦听器
将可聚焦设置为false
holder.button.setFocusable(false);
如果以编程方式定义ListView:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
listPaired=(ListView)findViewById(R.id.listView1);
listPairedData=newarraylist();
araPaired=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,listPairedData);
listPaired.setAdapter(araPaired);
listPaired.setOnItemClickListener(listPairedClickItem);
私有OnItemClickListener listPairedClickItem=新建OnItemClickListener(){
@凌驾
公共链接(AdapterView<?>arg0,视图arg1,内部arg2,长arg3){
字符串信息=((TextView)arg1.getText().toString();
Toast.makeText(getBaseContext(),“Item”+info,Toast.LENGTH_LONG).show();
}
};
只需将该行插入评级栏:
android:isIndicator="true"
在XML中,分级栏如下所示
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:isIndicator="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView<?>父视图、视图、,
内部位置,长id){
//TODO自动生成的方法存根
}
} );
您也可以使用lambda
。Java 1.7或更早版本的JVM不支持Lambda语法
listView.setOnItemClickListener((parent, view, position, id) -> {
...
});
按照其他建议使用Java
listitem.setClickable(false);
或在xml中:
android:clickable="false"
它工作得非常好Android-onicmclicklistener与适配器中listview行项的OnClickListener冲突。您只需确保代码得到良好的管理,并使用标准正确编写即可
检查以下链接中的答案:
我能提供的最简单的解决方案和最简单的方法就是这样。你只需要做这两个步骤
1.将其添加到XML文件中
许多人问,如果您只查找listview单击,列表中的孩子必须没有宽度“匹配父项”
即使您将“Focusable”设置为false,它也不会工作。
将子对象的宽度设置为包裹内容
<TextView
android:id="@+id/itemchild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
请添加一些代码。为什么不工作?一个错误?我没有得到任何错误,即使我正在调试,它也没有进入内部。。我将发布一些代码。@gujjula nikhilreddy发布一些代码。我以前已经检查过这个问题
查看我的文章以找到原因和解决方案:
我想你遇到了场景3。我在这篇文章中找到了答案,第一条评论:我正在使用的代码扩展了listactivity。这是我的codeListView lv=getListView();setContentView(lv);lv.setOnItemClickListener(新的OnItemClickListener(){@Override public void onItemClick(AdapterView arg0,View arg1,int position,long arg3){Toast.makeText(SuggestionActivity.this,“+position,Toast.LENGTH_SHORT.show();});}太棒了。这有助于一种乳液对我起作用。当我添加上述属性时,列表单击和按钮单击都有效。谢谢,太好了!!回答。。干杯:)谢谢。3年来我一直在开发android应用程序。我从没想过这个简单的把戏会奏效。我被同一个问题困扰了整整一天。。谢谢。。。想不到它救了我的命。感谢使用XML进行此操作时,请确保实际的子级(而不是父级布局)不可单击。而且,这个答案应该更高!
listView.setOnItemClickListener((parent, view, position, id) -> {
...
});
listitem.setClickable(false);
android:clickable="false"
<TextView
android:id="@+id/itemchild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...