2013-02-14 38 views
7

Tôi làm việc trên nền tảng nhắn tin như whatsup.Khi gửi thư, tôi phải cập nhật màn hình vì tôi đang nhận dữ liệu trong db.Khi tôi nhấn nút gửi, tôi phải cập nhật Chế độ xem. Tôi googled nhưng tôi không thể giải quyết chính xác.Có ai giúp tôi?Làm mới tất cả chế độ xem trong Android?

EDIT:

mã của tôi:

RelativeLayout layout=new RelativeLayout(this); 
       LayoutParams lparams = new LayoutParams(
         1200,LayoutParams.WRAP_CONTENT); 
       layout.setLayoutParams(lparams); 
       //layout.setBackgroundResource(R.drawable.bubble); 
       // Creating a new TextView 
       TextView tv = new TextView(this); 
       tv.setText(msgdesc[i]); 
       layout.setGravity(Gravity.RIGHT); 
       tv.setPadding(30, 10, 0, 0); 
       layout.addView(tv); 
       bubbleLayout.addView(layout); 

Trả lời

8

Bạn sẽ cần phải gọi một trong hai requestLayout() hoặc invalidate() phụ thuộc vào những gì bạn cập nhật chính xác theo quan điểm của bạn

Nếu bạn chỉ cần View để vẽ lại do đó, hãy gọi invalidate()

Nếu bạn thay đổi giới hạn View (e. g. kích thước) gọi requestLayout()

+0

tôi chỉnh sửa mã của tôi. Xem là bố cục của tôi? – DuyguK

1

Bạn có thử với view.invalidate()? http://developer.android.com/reference/android/view/View.html

Vẽ

Vẽ được xử lý bằng cách đi bộ cây và render từng xem mà cắt khu vực không hợp lệ. Bởi vì cây được di chuyển theo thứ tự, điều này có nghĩa là cha mẹ sẽ vẽ trước (tức là, phía sau) của chúng trẻ em, với anh chị em được vẽ theo thứ tự chúng xuất hiện trong cây. Nếu bạn đặt nền có thể vẽ cho Chế độ xem, khi đó Chế độ xem sẽ vẽ nó cho bạn trước khi gọi lại phương thức onDraw() của nó.

Lưu ý rằng khuôn khổ sẽ không rút ra quan điểm mà không phải là trong khu vực không hợp lệ .

Để buộc một cái nhìn để vẽ, gọi invalidate().

bạn có thể thử như câu trả lời trong bài viết này làm mất hiệu lực ViewGroup: How to force an entire layout View refresh?

+0

Lưu ý: Nếu bạn đang sử dụng listView, bạn có thể sử dụng notifysetDataChanged() cho bộ điều hợp của mình –

+0

Tôi chỉnh sửa mã của mình.Whic là chế độ xem của tôi.Tôi đã thêm bố cục động của mình? – DuyguK

+0

đặt bố cục RelativeLayout; như một trường trong lớp. Và khi bạn muốn làm mới, hãy thử với layout.invalidate(); –

3

nếu bạn sử dụng một listview với một listadapter, sau đó bạn phải sử dụng listadapter.notifyDataSetChanged(); này sẽ cập nhật listview của bạn với các dữ liệu mới

1

Cuối cùng nếu bạn chỉ có một TextView trong cách bố trí của bạn thử điều này:

//Supposing that msgdesc is a class field. 

void myRefreshFunction(RelativeLayout l) 
{ 
       if(l != null) 
       { 
        l.removeAllViews(); 
        TextView tv = new TextView(this); 
        tv.setText(msgdesc[i]); 
        layout.setGravity(Gravity.RIGHT); 
        tv.setPadding(30, 10, 0, 0); 
        layout.addView(tv); 
       } 
} 
Các vấn đề liên quan