ListView调用setOnClickListener传入OnItemClickListener报错求助
问题解决:ListView点击事件方法匹配错误
嗨,这个问题我太熟悉啦!你遇到的错误核心是方法参数类型不匹配:你给ListView调用了setOnClickListener()方法,但传入的是AdapterView.OnItemClickListener类型的匿名对象,而setOnClickListener()只能接受View.OnClickListener类型的参数,这就导致系统找不到合适的方法,直接报错了。
为什么会这样?
ListView是列表控件,它的条目点击有专门的处理方法——setOnItemClickListener(),而普通的setOnClickListener()是给单个View(比如Button、TextView)设置点击事件用的,两者不能混用。
修复后的代码
把原来的setOnClickListener()换成setOnItemClickListener()就可以解决问题,其他逻辑保持不变:
ArrayAdapter myArrayAdapter = new ArrayAdapter( this, android.R.layout.simple_list_item_1, myArrayList); myListView.setAdapter(myArrayAdapter); // 把setOnClickListener改成setOnItemClickListener myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == 0) { Intent myIntent = new Intent(view.getContext(), Aathiyagamam.class); startActivityForResult(myIntent, 0); } } });
额外说明
如果你确实想给整个ListView容器(不是里面的条目)设置点击事件,那才用setOnClickListener(),但这种场景非常少见,绝大多数时候我们都是处理列表条目的点击,所以用setOnItemClickListener()才是正确的选择。
内容的提问来源于stack exchange,提问作者Arul Xavier S
相关产品推荐
相关产品推荐

