onItemClick和onItemLongClick不会在ListView中触发,直到按下一次项目为止

时间:2013-05-13 13:00:56

标签: android listactivity

在我的ListView中,我有这两种方法,它们可以工作,但直到其中一个列表项被按下一次。所以,当我第一次按下/按住某个项目时没有任何反应,但是下次我按下/按住某个项目时它会完美运行。

这是我的onListItemClick方法

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
            File file = new File(path.get(position));
            longClick(file);
            Log.d(TAG, "onItemLongClick");
            return true;
        }
    });

    getListView().setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position ,long id) {
            File file = new File(path.get(position));
            player(file);
            Log.d(TAG, "onItemClick");
        };
    });
}

1 个答案:

答案 0 :(得分:1)

您在setOnItemLongClickListener内设置了setOnItemClickListeneronListItemClick,因此在您第一次按下ListItem之前,它们不会触发。

您需要做的是onListItemClick之外的此代码。

getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
            File file = new File(path.get(position));
            longClick(file);
            Log.d(TAG, "onItemLongClick");
            return true;
        }
    });

    getListView().setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position ,long id) {
            File file = new File(path.get(position));
            player(file);
            Log.d(TAG, "onItemClick");
        };
    });