活动类代码:

conversationList = (ListView)findViewById(android.R.id.list);
ConversationArrayAdapter conversationArrayAdapter=new  ConversationArrayAdapter(this, R.layout.conversation_list_item_format_left, conversationDetails);
conversationList.setAdapter(conversationArrayAdapter);
conversationList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        Log.d("test","clicked");
    }
});

Adapter类中的getView函数:

if (v == null) {                                
    LayoutInflater vi = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if(leftSideMessageNumber.equals(m.getTo())) {
        v = vi.inflate(R.layout.conversation_list_item_format_left, null);
    } else {
        v = vi.inflate(R.layout.conversation_list_item_format_right, null);
    }
}

在膨胀时使用两个xml会有问题吗?


当前回答

我通过从列表中删除可点击的视图来解决这个问题。

其他回答

我也遇到了同样的问题,尝试了所有提到的解决方案都无济于事。通过测试,我发现使文本可选会阻止侦听器被调用。通过将它切换为false,或者删除它,我的监听器再次被调用。

android:textIsSelectable="false"

希望这能帮助像我这样被困住的人。

onClick也有同样的问题。解决方案是从xml中删除以下内容

android:tooltipText=""

我也有同样的问题,我在行布局中使用了具有“可聚焦”属性的文本样式。我把它取下来后它还能用。

将此添加到主布局中 android: descendantFocusability = " blocksDescendants " 写这个代码到每个按钮,Textview,ImageView等 onClick android: focusable = " false " android:点击= " false "

希望它能起作用。

我也遇到了同样的问题,我只是看到我不小心设置了:

@Override
public boolean isEnabled(int position)
{
    return false;
}

在CustomListViewAdapter类上。

将其更改为:

return true;

我已经设法解决了这个问题。 以防万一有人犯了同样的错误……