【问题标题】:How to highlight selected item in listView with a large list of items?如何使用大量项目突出显示 listView 中的选定项目?
【发布时间】:2014-05-01 21:59:57
【问题描述】:

我在平板电脑应用程序中有一个自定义 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));
        }
    }
});

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    您可以尝试为列表视图项创建自定义选择器 - 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);
    

    【讨论】:

    • 我对 drawable 或 hos 选择看起来没有问题,问题是 View Recycling 让它忘记了选择
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2012-06-23
    • 2011-08-16
    相关资源
    最近更新 更多