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中使用它,但这不是一个好点。还有另外一种方法吗?
答案 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方法中返回视图你可以设置选择器