này là không bình thường. Nếu không thấy mã của bạn, tôi có thể đề xuất sau:
1) Bạn không gọi số notifyDataSetChanged()
từ chuỗi giao diện người dùng. Cách đúng:
runOnUiThread(new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
}
});
2) Bạn vô tình hoặc không được thực hiện một cuộc gọi đến adapter.notifyDataSetInvalidated();
3) Trong bộ chuyển đổi của bạn, bạn ghi đè lên các phương pháp adapter.notifyDataSetChanged();
và bổ sung hướng dẫn để đi đến đầu
4) Nếu bạn đang sử dụng danh sách để điền vào bộ điều hợp - bạn cung cấp danh sách mới mọi lúc, do đó cài đặt bộ điều hợp được làm mới. Bạn nên luôn luôn cung cấp cùng một danh sách. Tuy nhiên bạn có thể thay đổi nó nhiều như bạn muốn. Nếu bạn đang thiết lập lại danh sách sử dụng list.clear
thay vì list = new ArrayList();
Dưới đây là một ví dụ về bộ chuyển đổi của tôi:
public class Adapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
public MediaItemAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.item_composer, null);
}
TextView title = (TextView) vi.findViewById(R.id.item_title); // title
TextView price = (TextView) vi.findViewById(R.id.price);
return vi;
}
}
Gọi cho adapter:
List myList = new ArrayList<HashMap<String, String>>();
Adapter ma = new Adapter(this, myList);
myList thể để trống trước khi bộ chuyển đổi khởi tạo.
Sau đó làm một số hoạt động với danh sách của tôi:
myList.add(someElement);
ma.notifyDataSetChanged();
nếu bạn cần xóa tất cả các mục:
myList.clear();
ma.notifyDataSetChanged();
thực hiện như vậy là khá bất tận, tôi thấy nhiều hơn thì 15.000 yếu tố mà không cần bất kỳ vấn đề.
bạn có thể đăng toàn bộ mã không? – yfsx