如何在ListView上实现onClick和onLongClick侦听器?

时间:2018-08-14 00:29:04

标签: android listview onclicklistener onlongclicklistener

我希望ListView的项目对常规点击和长按做出反应。 我尝试设置两个侦听器,但它告诉我第一个侦听器无法应用于第二个侦听器。 这是我的代码的一部分:

    AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        TextView product = (TextView) view;
                ...
    }
};

AdapterView.OnItemLongClickListener itemLongClickListener = new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
        TextView product = (TextView) view;
        product.setBackgroundColor(Color.GREEN);
        return true;
    }
};

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        this,
        android.R.layout.simple_list_item_1,
        arrayOfNames);

ListView itemsView = (ListView)findViewById(R.id.items);
itemsView.setOnItemClickListener(itemClickListener);
itemsView.setOnItemClickListener(itemLongClickListener);

1 个答案:

答案 0 :(得分:1)

您必须在ListView中设置setOnItemLongClickListener():

lv.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int pos, long id) {
            // TODO Auto-generated method stub

            Log.v("long clicked","pos: " + pos);

            return true;
        }
    }); 

列表中每个项目的XML(您应该使用自定义XML)也必须具有android:longClickable="true"(或者您可以使用便捷方法lv.setLongClickable(true);).),这样您可以仅包含一个列表一些项目响应longclick。