Tôi đã tạo một ListView tùy chỉnh bằng cách mở rộng SimpleCursorAdapter. Kết quả là IMAGE + CheckedTextView (Text + Checkbox).Android Bấm vào danh sáchMục kiểm tra hộp kiểm sai
Khi tôi bấm lâu một mục, mọi thứ hoạt động tốt - tôi nhận được đúng ID và chi tiết của mục được nhấp.
Sự cố xảy ra khi tôi cố đánh dấu một mục là đã chọn nhưng kiểm tra hộp kiểm sai.
Ví dụ: Tôi có 9 mục trong danh sách của tôi, được sắp xếp 1-9. nếu tôi bấm vào listItem 1, hộp kiểm trên dòng 9 đang được kiểm tra. nếu tôi bấm vào mục 4, hộp kiểm trên dòng 6 đang được kiểm tra và nếu tôi bấm vào dòng giữa, nó đang được kiểm tra.
Rõ ràng là tôi đang thiếu thứ gì đó ở đây :) Hãy nhớ khi tôi bấm dài dòng (contextMenu mở), mọi thứ đều hoạt động tốt.
Đây là người biết lắng nghe:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView markedItem = (CheckedTextView) view.findViewById(R.id.btitle);
if (!markedItem.isChecked()) {
markedItem.setChecked(true);
} else {
markedItem.setChecked(false);
}
}
});
Đánh giá cao bất kỳ sự giúp đỡ!
Hãy cho tôi biết Nếu bạn cần tôi đăng thêm mã.
Cảm ơn bạn!
btw, Nếu tôi bấm vào nhiều hơn một ... Đảng tiếp tục ... không có thứ tự rõ ràng ...
EDIT: mã Adaptor
public class ImageCursorAdapter extends SimpleCursorAdapter {
private Cursor c;
private Context context;
private String url;
private TextView bUrl;
public ImageCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
this.context = context;
}
public View getView(int pos, View inView, ViewGroup parent) {
View v = inView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.image_list, null);
}
this.c.moveToPosition(pos);
final TextView bTitle = (TextView) v.findViewById(R.id.btitle);
String bookmark = this.c.getString(this.c.getColumnIndex(Browser.BookmarkColumns.TITLE));
byte[] favicon = this.c.getBlob(this.c.getColumnIndex(Browser.BookmarkColumns.FAVICON));
if (favicon != null) {
ImageView iv = (ImageView) v.findViewById(R.id.bimage);
iv.setImageBitmap(BitmapFactory.decodeByteArray(favicon, 0, favicon.length));
}
bTitle.setText(bookmark);
return (v);
}
}
Hiển thị cho chúng tôi bộ chuyển đổi – Falmarri
câu hỏi đã chỉnh sửa của bạn. Cảm ơn. –
bạn có đang ghi lại giá trị vị trí trong trình nghe không? Bạn có người nghe nào khác không? – Jim