2012-01-25 31 views
11

Tôi đang sử dụng bộ điều hợp danh sách để hiển thị các cửa hàng khác nhau, khi ai đó chọn cửa hàng đưa họ đến một hoạt động mới nơi họ có thể thêm cửa hàng vào mục yêu thích trên màn hình đó.Android onResume danh sách cập nhật bộ điều hợp

Có nút Quay lại trên các cuộc gọi đó finish(); quay trở lại màn hình với chế độ xem danh sách.

Bây giờ vấn đề là listview không được cập nhật (ví dụ: không cho thấy cửa hàng được thêm vào yêu thích). Tôi đã thử mã này nhưng không có may mắn:

@Override 
public void onResume() { 
    super.onResume(); 
    list.setAdapter(null);  
    updateMyList(); 
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
     ((String[])status.toArray(new String[0]))); 
    list.setAdapter(adapter); 
} 

updateMyList() gọi API máy chủ và cập nhật tên và mảng trạng thái.

Với mã này danh sách không thực sự cập nhật ...

+0

http://stackoverflow.com/a/17333384/596555, có thể trợ giúp bạn – boiledwater

Trả lời

29

Bạn nên đặtAdapter chỉ trong số onCreate() của mình, bên trong onResume() bạn chỉ cần gọi adapter.notifyDataSetChanged() bằng bộ sưu tập dữ liệu mới. Điều này sẽ làm mới ListView của bạn với bộ sưu tập dữ liệu mới.

0

Trước khi thêm mới Xem để ListView loại bỏ tất cả các giao diện trước đó

listView.removeAllViews(); 

và sau đó thêm lớp adapter với giá trị mới. Một điều chắc chắn rằng các giá trị của bạn được cập nhật khi bạn trở về từ hoạt động thứ hai và mã này đang gọi.

1

Trước hết u cần phải thêm danh sách các cửa hàng để ArrayList, nộp này danh sách mảng đến ADAPTER sau đó thêm nó vào danh sách xem

list.setAdapter(adapter); 

nó sẽ hiển thị các cửa hàng danh sách; hãy onListItemClick nhấp vào đó u sẽ nhận được listItem Id; bằng cách sử dụng ID mục danh sách u, bạn có thể đưa ra ý định như thế này

Intent intent=new Intent(getApplicationContext(),------.class); 
    startActivityForResult(intent); 

Lấy một lớp phương thức java/setter và getter; lấy phương thức getter là tĩnh, thiết lập tên cửa hàng những gì bạn đã tạo ra trong hoạt động con; phương pháp ghi đè được gọi là onBackPressed(); bên trong phương thức đó viết

setResult(RESULT_OK); 
finish(); 

lấy phương thức onActivityForResult() trong lớp cha; bên trong của phương pháp mà

arraylist.add(javabeanClassname.getName()); 

thêm ArrayList đó đến Adapter và viết mã

list.setAdapter(adapter); 
4

Sử dụng mã này:

myList.clear(); 
myList.add("your array list items");    
setListAdapter(adapter); 
adapter.notifyDataSetChanged(); 

Tôi nghĩ rằng đây sẽ giúp bạn.

Cảm ơn ....

Các vấn đề liên quan