我的Android活动中有一个ListView
,其人口使用名为BaseAdapter
的自定义ClientListAdapter
。
我在这个AsyncTask中填充了这个视图的内容。
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的第一行(也是唯一一行)。而“选择”我的意思是:
实际上选择“setSelection”或
只需突出显示该行或整个ListView。
我的问题是在onPostExecute
方法中我无法到达那一行。
我试过了:
clientList.setSelection(0);
- &gt;什么都没做。
clientList.getChildAt(0).setBackground(#somecolor);
- &gt;没有clientList.getChildAt(0)
clientList.setBackground(#somecolor);
- &gt;奇怪的是,什么也没做。
关于我遗失的任何想法?
答案 0 :(得分:1)
为Adapter
设置clientList
后,使用post
方法设置选择,如下所示:
clientList.post(new Runnable(){
@Override
public void run(){
clientList.setSelection(0);
}
});
请注意,如果您未设置选择器,则无法获得所选项目的视觉反馈。