2015-10-20 30 views
0

我的Android活動中有一個ListView,它使用自定義BaseAdapter(名爲ClientListAdapter)作爲其人口。 我在這個AsyncTask中填充這個視圖的內容。在其創建後選擇ListView元素

public class MyActivity { 

    […] 

    ClientListAdapter clientListAdapter; 

    […] 

    private class MyTask extends AsyncTask<String, Integer, String>{ 

     @Override 
     protected String doInBackground(String... params) { 
      Client client = getClient(); 

      List<Client> clients = new ArrayList<>(); 
      clients.add(client); 
      clientListAdapter = new ClientListAdapter(MyActivity.this, clients); 

      return 「OK"; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      clientList.setAdapter(clientListAdapter);  
     } 
    } 

} 

現在我想選擇此ListView的第一個(也是唯一)行。並以 「選擇」 我的意思是:

  1. 其實與 「爲setSelection」 OR

  2. 只需突出顯示該行或整個Li​​stView的選擇。

我的問題是,在onPostExecute方法我無法到達那一行。 我試過了:

clientList.setSelection(0); - >什麼也沒做。

clientList.getChildAt(0).setBackground(#somecolor); - >沒有clientList.getChildAt(0)

clientList.setBackground(#somecolor); - >奇怪的是,什麼也沒做。

任何想法我缺少什麼?

回答

1

設置好後AdapterclientList,使用post方法設置選擇,就像這樣:

clientList.post(new Runnable(){ 
    @Override 
    public void run(){ 
     clientList.setSelection(0); 
    } 
}); 

請注意,如果您沒有設置一個選擇,你不會得到的視覺反饋選定的項目。

+0

它的工作,非常感謝你! –