Tôi đang làm việc trên một ListActivity sẽ hiển thị một loạt các số (trọng số). Tôi muốn thay đổi nền của một hàng cụ thể trong ListView. Để làm điều này, tôi đã tạo ra một triển khai tùy chỉnh của lớp ArrayAdapter và đã ghi đè phương thức getView. Bộ điều hợp chấp nhận danh sách các số và đặt nền của hàng có số từ 20 đến màu vàng (vì lý do đơn giản).Custom ArrayAdapter setBackground trong getView
public class WeightListAdapter extends ArrayAdapter<Integer> {
private List<Integer> mWeights;
public WeightListAdapter(Context context, List<Integer> objects) {
super(context, android.R.layout.simple_list_item_1, objects);
mWeights = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int itemWeight = mWeights.get(position);
if (itemWeight == 20) {
v.setBackgroundColor(Color.YELLOW);
}
return v;
}
}
Vấn đề là không chỉ hàng có số 20 là nền màu vàng mà còn là hàng có số 0 (hàng đầu tiên) và tôi không chắc tại sao lại như vậy.
Tôi có làm gì sai trong phương thức getView (như gọi phương thức siêu) không? Lý do của tôi cho việc thực hiện là: Tất cả các khung nhìn trả về phải giống nhau (đó là lý do tại sao tôi gọi phương thức siêu) chỉ khung nhìn phù hợp nếu tiêu chí cần được thay đổi.
Cảm ơn sự giúp đỡ của bạn!
Tôi hiểu. Điều này sẽ có ý nghĩa, vâng. Vì vậy, câu hỏi bây giờ là cách tốt nhất để giải quyết vấn đề này là gì. Bỏ qua convertView hoặc thiết lập các thuộc tính kiểu cho cả hai, nếu kết thúc khác, các tùy chọn? – Igor