如何设置不同的listselector

时间:2011-12-06 06:43:43

标签: android android-layout

mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View item,
                    int position, long id) {

        if(position == 0)
            mainListView.setSelector(R.drawable.settings_selector_up);
        else if(position == mainListView.getCount())
            mainListView.setSelector(R.drawable.settings_selector_down);
        else
            mainListView.setSelector(R.drawable.settings_selector_mid);
            }
                });

我有listview,我的listview有一个圆角。我使用3个选择器列表视图。因此,当我在listView的第一项中选择时,应该使用settings_selector_up,它只有在topleft和topright中有一个圆角。在listview的中间没有圆角,listview的最后一项应该有圆底和右下角。我在onitemClickListener中使用它,但这不是一个好点。还有另外一种方法吗?

2 个答案:

答案 0 :(得分:1)

嗯,这似乎是一个非常快速的问题需要解决,但事实并非如此。您应修改适配器并使其接受3种不同类型的项目(向上,向下,中间),然后更改getView,如下所示:

...
if (convertView == null) {
   convertView = getLayoutInflater().inflate(R.layout.your_layout, parent, false);

   switch (type) {
       case TYPE_ITEM_UP:
           convertView.setBackgroundResource(R.drawable.selector_up);
           break;

   case TYPE_ITEM_DOWN:
        convertView.setBackgroundResource(R.drawable.selector_down);
        break;
       ...
    }
}
...

看看这个example,你可以减少你的问题,非常有帮助。我使用相同的解决方案来解决您的问题并且效果很好。

答案 1 :(得分:0)

如果你使用任何适配器,那么在getview方法中返回视图你可以设置选择器