2011-09-13 85 views
5

我是Android的新開發者。我正在使用我的應用程序中的soap對象與.net數據庫服務進行通信。我從數據庫服務器獲取響應字符串。但我的意圖是,當我從數據庫服務器獲得一個字符串作爲響應,然後以文本視圖的形式查看類似的我正在獲取圖像編碼的string.how獲取響應作爲視圖。我寫的代碼如下:如何在Android中逐個顯示字符串響應?

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

我送請求作爲XML到數據庫服務器

從數據庫服務器的響應是在清單:

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大小已完成。

回答

1

你可以做什麼,而無需等待響應,並從後臺線程響應添加到messages,並呼籲

mAdapter.notifyDatasetChanged(); 

這是LazyLoading概念,我希望它應該工作顯示列表視圖

更新

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

嘿ingsaurabh,我已經建立惰性加載mAdater稱爲mAdapter.notifyDatasetChanged()對象螞蟻過程;但它不適用於查看imedialty,當我得到一條消息,因爲string.plzzz可以給你很好的解決方案 –

+0

更新了答案檢查 – ingsaurabh

+0

嘿沒有區別同樣的事情沒有影響 –

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. 
    } 
} 
+0

嘿Pratik我從後臺收到消息但不適用於view.if我作爲「hai」得到響應然後imediatly我想查看hai.plzzz給它很好的解決方案 –

相關問題