2011-09-13 7 views
5

Tôi là nhà phát triển mới trong Android. Tôi đang làm việc với đối tượng xà phòng trong ứng dụng của tôi để giao tiếp với dịch vụ .net db. Tôi nhận được phản hồi dưới dạng chuỗi từ máy chủ DB. Nhưng ý định của tôi là khi tôi nhận được một chuỗi từ máy chủ db dưới dạng phản hồi thì imediatly xem dưới dạng xem văn bản tương tự như tôi đang nhận được chuỗi mã hóa hình ảnh.how để nhận được phản hồi imedialty dưới dạng xem. Tôi đã viết mã như sau:Làm thế nào để hiển thị chuỗi phản ứng từ db từng cái một trong Android?

String xml="<spGetUserMessages><SearchLocation></SearchLocation><LoginUserID>"+Userid+"</LoginUserID></spGetUserMessages>"; 

Tôi gửi yêu cầu như XML để máy chủ db

Các phản hồi từ máy chủ db có trong danh sách:

List<MessageClass> response=new ParseXml().getUserMessages(new Generic().getMessages(xml)); 

    String messages=new String[response.size()]; 

    for(int i=0;i<response.size();i++) 
     { 

      //the response values are saved in messages array 
      messages[i]=response.get(i).getmessage(); 

       } 

Tôi đã viết một bộ chuyển đổi cơ sở lớp học trong lớp đó chúng tôi có một phương pháp như getView tôi đã thực hiện như sau:

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 


    if(convertView==null) 
     vi = inflater.inflate(R.layout.item, null); 



    TextView text=(TextView)vi.findViewById(R.id.text);; 
    ImageView image=(ImageView)vi.findViewById(R.id.image); 

    Log.v("rrrrrrrrrr", "rrrrrrrr"+messages[position]); 

    text.setText(messages[position]); 
    } 

Từ mã trên, tôi hiển thị tất cả các tin nhắn cùng một lúc. Nhưng trong tình huống này, câu trả lời là mất thời gian sau đó tôi nhận được màn hình trống. Ở đây ý định của tôi là khi tôi nhận được một chuỗi phản ứng sau đó tôi sẽ xem chuỗi đó như là văn bản xem thời gian tới tiếp theo tương tự như vậy cho đến khi kích thước reposnse đã hoàn thành.

Trả lời

1

Những gì bạn có thể làm là hiển thị listview mà không cần chờ đợi phản ứng và từ sợi nền thêm các câu trả lời để messages và gọi

mAdapter.notifyDatasetChanged(); 

Đây là khái niệm về LazyLoading và tôi hy vọng nó sẽ làm việc

Cập nhật

runOnUiThread(new Runnable() { 
public void run() { 
    adapter.notifyDataSetChanged(); 
} 
}); 
+0

hey ingsaurabh, tôi đã tạo LazyLoading mAdater đối tượng kiến ​​được gọi là mAdapter.notifyDatasetChanged(); nhưng nó không được áp dụng để xem imedialty, khi tôi nhận được một tin nhắn như string.plzzz u có thể cho giải pháp tốt trên nó –

+0

Cập nhật câu trả lời kiểm tra rằng – ingsaurabh

+0

hey không có sự khác biệt cùng một điều không có hiệu lực –

1

sử dụng lớp AsyncTask để hoạt động ở chế độ nền quá trình như thế này

private String messages[]; 
class BackgroundTask extends AsyncTask<Void, Void, Void>{ 

    public void doInBackground(Void... arg){ 

     List<MessageClass> response=new ParseXml().getUserMessages(new Generic().getMessages(xml)); 

     messages=new String[response.size()]; 

     for(int i=0;i<response.size();i++){ 
     //the response values are saved in messages array 
     messages[i]=response.get(i).getmessage(); 

     } 
    } 

    public void postExecute(Void result){ 
      // here you initialize the listview so the getview() method will call after fetching the response and store into the array. 
    } 
} 
+0

hey Pratik tôi nhận được tin nhắn từ mặt đất trở lại nhưng không áp dụng cho view.if tôi nhận được một phản ứng như "hai" sau đó imediatly tôi muốn xem rằng hai.plzzz cho giải pháp tốt về nó –