Tôi có một listview với một mảng tùy chỉnh xử lý khoảng 15 chuỗi. Kiểu của mỗi hàng thay thế (giữa các nhãn và giá trị cho các nhãn đó - ví dụ hàng 1 có thể là "địa chỉ email" và hàng 2 sẽ là địa chỉ email thực tế). Tôi đang thay đổi phong cách của mỗi hàng để thay thế như thế này trong phương thức getView() của arrayadapter. Vì vậy, nếu mục ở vị trí hiện tại là một nhãn, tôi sẽ thay đổi kiểu dáng từ kiểu hàng mặc định (đó là những gì các giá trị đã áp dụng cho chúng). Khi listview tải lần đầu tiên, kiểu dáng hoàn hảo và chỉ là cách tôi muốn. Nếu tôi cuộn danh sách từ từ lên hoặc xuống, nó vẫn như vậy. Tuy nhiên, nếu tôi cuộn danh sách nhanh lên và xuống, kiểu dáng của các hàng giá trị bắt đầu thay đổi thành kiểu của các nhãn giá trị cho đến khi tất cả các hàng có kiểu dáng của hàng nhãn. Có ai biết tại sao điều này sẽ xảy ra? Tôi đã sử dụng bộ điều hợp tùy chỉnh trên các danh sách xem khác trong ứng dụng mà không gặp vấn đề gì như thế này.Khi tôi cuộn chế độ xem danh sách bằng bộ điều hợp tùy chỉnh quá nhanh lên và xuống, getView() bắt đầu hoạt động một cách kỳ lạ. Tại sao?
Chỉnh sửa: Phát hiện ra rằng nó cũng thay đổi tất cả các hàng thành kiểu nhãn trên các thay đổi hướng dọc-> chiều ngang. Không làm điều này trên phong cảnh-> thay đổi chân dung. Dưới đây là bộ điều hợp tôi đang sử dụng. Tui bỏ lỡ điều gì vậy?
public class DetailsAdapter extends ArrayAdapter<String> {
private TextView text = null;
private String item = null;
public DetailsAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
text = (TextView) super.getView(position, convertView, parent);
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
text.setBackgroundColor(0xFF575757);
text.setTextSize(15);
text.setTypeface(null, Typeface.BOLD);
text.setPadding(8, 5, 0, 5);
} else {
text.setPadding(15, 15, 0, 15);
}
return text;
}
@Override
public boolean isEnabled(int position) {
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
return false;
} else {
return true;
}
}
}
Bạn có thể hiển thị mã getView của mình không? –
Ban đầu có bao nhiêu hàng sẽ được hiển thị khi xem danh sách được tải. Tạo một khung nhìn cho một hàng bằng cách sử dụng phương thức getview của customadapter có nhiệm vụ tốn nhiều bộ nhớ cao. Đây là lý do khiến cho các nhãn của bạn bị xáo trộn. Viết cái nhìn thoáng qua về mã của bạn .. Có thể bạn sẽ nhận được giải pháp –