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"
    ...