2012-07-25 14 views
9

tôi đã vấn đề này, tôi cóCập nhật dữ liệu trong Arrayadapter

private ArrayList<CustomItem> items; 
private ArrayAdapter<CustomItem> arrayAdapter; 

i hiển thị dữ liệu hiện diện trong mục, dữ liệu này tôi thấy trong listview, bây giờ tôi muốn cập nhật dữ liệu và xem dữ liệu mới này

if (!items.isEmpty()) { 
    items.clear(); // i clear all data 
    arrayAdapter.notifyDataSetChanged(); // first change 
    items = getNewData();// insert new data and work well 
    arrayAdapter.notifyDataSetChanged(); // second change          
} 

trong sự thay đổi đầu tiên tôi xem dữ liệu được làm sạch, nhưng trong sự thay đổi thứ hai tôi không thấy các dữ liệu mới trong listview, tôi kiểm tra và mục không rỗng

tôi không biết ở đâu lỗi, bạn có thể lp tôi? regads tốt nhất Antonio

+0

Bạn có tự tin rằng 'getNewData()' được trả lại một danh sách có chứa một cái gì đó? –

+1

Vui lòng đăng getNewData(), bạn cũng chỉ cần gọi 'arrayAdapter.notifyDataSetChanged();' một lần ở cuối. – Sam

Trả lời

11

Giả sử getNewData() hàm trả ArrayList<CustomItem>, bạn có thể thay đổi dòng:

items=getNewData(); 

để

items.addAll(getNewData()); 

và xem nếu mà làm việc?

+1

nó hoạt động tốt cảm ơn – Ant

7

Đây là cách tôi cập nhật Adapter với dữ liệu mới:

  if (arrayAdapter == null) { 
       arrayAdapter = new CustomArrayAdapter(getActivity(), data); 
       listview.setAdapter(userAutoCompleteAdapter); 
      } else { 
       arrayAdapter.clear(); 
       arrayAdapter.addAll(newData); 
       arrayAdapter.notifyDataSetChanged(); 
      } 
+0

Nó phải là giải pháp được chấp nhận. – Juanin