Sự kiện OnItemLongClickListener và OnItemClickListener

Mình có 1 ListView, khi set sự kiện OnItemLongClickListener thì AlertDialog sẽ hiện lên hỏi có đồng ý xóa hay không và khi set sự kiện OnItemClickListener thì sẽ chuyển sang ActivityCapNhat. Nhưng khi LongClick vào ListView thì nó vẫn bắt sự kiện Click vào item và chuyển sang ActivityCapNhat. Làm sao để khắc phục ?

Code:

 listViewPaint.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        //parent.getChildAt(position).setBackgroundColor(Color.parseColor("#FAFAFA"));

        // Xóa 1 paint
        final int position2 = position;

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Thông báo");
        builder.setMessage("Bạn có muốn xóa paint này ?");

        builder.setPositiveButton("Có", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                _id = arrayList.get(position2).getId();
                database.QueryData("DELETE FROM Painttbl WHERE Id = '" + _id + "'");
                LoadDuLieu();
                Toast.makeText(getActivity(), "Đã xóa paint.", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("Không", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.show();


        return false;
    }
});


listViewPaint.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        // Đưa id và name của paint sang CapNhatPaintActivity
        int _idEdit = arrayList.get(position).getId();
        String name = arrayList.get(position).getName();
        byte[] paint = arrayList.get(position).getPaint();

        //parent.getChildAt(position).setBackgroundColor(Color.parseColor("#FAFAFA"));

        Intent intentEdit = new Intent(getActivity(), CapNhatPaintActivity.class);
        intentEdit.putExtra("_idEdit", _idEdit);
        intentEdit.putExtra("name", name);
        intentEdit.putExtra("paint", paint);
        startActivity(intentEdit);


    }
});
1 Like

Bạn phải return true trong onItemLongClick để thông báo rằng event này đã được ghi nhận thì OnItemClick mới không được gọi

4 Likes

Trong onLongItemClick bạn return true nhé. Khi đó onItemClick sẽ ko thực hiện nữa:

3 Likes

Cảm ơn bạn :grinning:

Cảm ơn bạn :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?