创建后选择ListView元素

时间:2015-10-20 10:36:06

标签: android listview android-listview

我的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的第一行(也是唯一一行)。而“选择”我的意思是:

  1. 实际上选择“setSelection”或

  2. 只需突出显示该行或整个Li​​stView。

  3. 我的问题是在onPostExecute方法中我无法到达那一行。 我试过了:

    clientList.setSelection(0); - &gt;什么都没做。

    clientList.getChildAt(0).setBackground(#somecolor); - &gt;没有clientList.getChildAt(0)

    clientList.setBackground(#somecolor); - &gt;奇怪的是,什么也没做。

    关于我遗失的任何想法?

1 个答案:

答案 0 :(得分:1)

Adapter设置clientList后,使用post方法设置选择,如下所示:

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

请注意,如果您未设置选择器,则无法获得所选项目的视觉反馈。