Android 如何设置不同的列表选择器 mainListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){ @凌驾 public void onItemClick(AdapterView父项、视图项、, 内部位置,长id){ 如果(位置==0) mainListView.setSelector(R.drawable.settings\u selector\u up); else if(position==mainListView.getCount()) mainListView.setSelector(R.drawable.settings\u selector\u down); 其他的 mainListView.setSelector(R.drawable.settings\u selector\u mid); } });

Android 如何设置不同的列表选择器 mainListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){ @凌驾 public void onItemClick(AdapterView父项、视图项、, 内部位置,长id){ 如果(位置==0) mainListView.setSelector(R.drawable.settings\u selector\u up); else if(position==mainListView.getCount()) mainListView.setSelector(R.drawable.settings\u selector\u down); 其他的 mainListView.setSelector(R.drawable.settings\u selector\u mid); } });,android,android-layout,Android,Android Layout,我有listview,我的listview有一个圆角。我对listview使用3个选择器。因此,当我在listView的第一项中选择时,设置选择器应该向上运行,它只有上左和上右两个圆角。在ListVIEW的中间没有圆角,ListVIEW的最后一个项目应该有圆底左和右下角。我在McClickListener中使用了这一点,但这不是一个好的观点。还有其他方法吗?如果您使用的是任何适配器,那么在返回视图的getview方法中,您可以设置选择器。好吧,这似乎是一个很快就能解决的问题,但实际情况并非如此。

我有listview,我的listview有一个圆角。我对listview使用3个选择器。因此,当我在listView的第一项中选择时,设置选择器应该向上运行,它只有上左和上右两个圆角。在ListVIEW的中间没有圆角,ListVIEW的最后一个项目应该有圆底左和右下角。我在McClickListener中使用了这一点,但这不是一个好的观点。还有其他方法吗?

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

好吧,这似乎是一个很快就能解决的问题,但实际情况并非如此。您应该修改适配器并使其接受3种不同类型的项(up、down、mid),然后以如下方式更改getView:

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);
            }
                });

看看这个,你可以把你的问题减少到那个,非常有帮助。我对您的问题使用了相同的解决方案,效果很好。

您是否使用适配器设置数据?
...
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;
       ...
    }
}
...