5

我是安卓的新开发者。我正在我的应用程序中使用soap 对象与.net db 服务进行通信。我从数据库服务器获取响应作为字符串。但是我的意图是,当我从数据库服务器获取字符串作为响应然后立即以文本视图查看时,我正在获取图像编码的字符串。如何将响应即时作为视图。我编写的代码如下:

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

我将请求作为 XML 发送到数据库服务器

来自 db 服务器的响应在列表中:

 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();

               } 

我已经在该类中编写了一个基本适配器类,我们有一个 getView 方法,我已实现如下:

    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]);
    }

从上面的代码中,我一次显示所有消息。但在这种情况下,响应需要时间,然后我会出现空白屏幕。这里我的意图是当我得到一个字符串响应时,我将在下一次类似地将该字符串作为文本视图查看,直到 reposnse 大小完成。

4

2 回答 2

1

您可以做的是在不等待响应的情况下显示 Listview,并从后台线程添加响应messages并调用

mAdapter.notifyDatasetChanged();

这是一个概念,LazyLoading我希望它应该起作用

更新

runOnUiThread(new Runnable() {
public void run() {
    adapter.notifyDataSetChanged();
}
});
于 2011-09-13T05:21:59.113 回答
1

像这样使用 AsyncTask 类在后台进程中工作

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.
     }
}
于 2011-09-13T05:22:35.447 回答