如何使用大量项目突出显示listView中的所选项目?

时间:2014-05-01 21:59:58

标签: android android-listview

我在平板电脑应用程序中有一个自定义ListView,左边有一个ListView,右边有详细的片段,当你从listView左边选择一个项目我希望它突出显示并保持高亮显示(我这样做了)部分)但当我向下滚动到列表的底部并返回时,由于回收视图,它会忘记突出显示,我该怎样才能以不同的方式进行?

以下是我在ListView适配器中使用的代码:

protected LinearLayout selectedItem;
protected LinearLayout selectedItemPosition = -1;
.
.
.
@Override
public int getViewTypeCount() {
    return 3; // I have 3 types of list Items, this part is working fine..
}
public int getItemViewType(int pos) {
    // This part works fine too
}
.
.
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;
.
.
.
if (selectedItemPosition == pos) {
    holder.listItem.setSelected(true);
}

final LinearLayout listItem = holder.listItem;      

holder.listItem.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (clickCallback != null) {                    
            if (activateOnClick) {
                if (selectedItemPosition > -1) {
                    selectedItem.setSelected(false);
                }
                selectedItemPosition = pos;
                listItem.setSelected(true);
                selectedItem = listItem;
            }
            clickCallback.callback(NewsItems.get(pos));
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您可以尝试为listview项创建自定义选择器 - listview_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="true" 
     android:state_pressed="true" android:drawable="@color/yourColor" />
    <item android:state_enabled="true"
     android:state_focused="true" android:drawable="@color/yourColor" />
    <item android:state_enabled="true"
     android:state_selected="true" android:drawable="@color/yourColor" />
    <item
     android:drawable="@color/yourColor" />
</selector>

然后,使用

listView.setSelector(R.drawable.listview_selector);