5

私はアンドロイドの新しい開発者です。.net db サービスと通信するために、アプリケーションで SOAP オブジェクトを使用しています。DB サーバーから文字列として応答を取得しています。しかし、私の意図は、dbサーバーから文字列を応答として取得し、すぐにテキストビューとして表示することです。同様に、画像でエンコードされた文字列を取得しています。私は次のようにコードを書きました:

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

リクエストをXMLとしてdbサーバーに送信しています

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

上記のコードから、一度にすべてのメッセージを表示しています。しかし、この状況では応答に時間がかかり、空白の画面が表示されます。ここで私の意図は、文字列応答を取得したときに、その文字列を次回同様に応答サイズが完了するまでテキスト ビューとして表示することです。

4

2 に答える 2

1

あなたができることは、応答を待たずにリストビューを表示し、バックグラウンドスレッドから応答を追加して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 に答える