如何在Recycler视图中突出显示所选项目

时间:2016-12-26 05:38:28

标签: android android-recyclerview

我正在尝试从Recyclerview中选择值,突出显示所选项目。我想更改bg颜色和文本颜色和图像。现在我使用以下代码。

selector_row

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

onBindViewHolder上的recyclerview

holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (selectedItems.get(position, false)) {
                    selectedItems.delete(position);
                    holder.itemView.setSelected(false);
                }
                else {
                    selectedItems.put(position, true);
                    holder.itemView.setSelected(true);
                }
            }
        });

现在我可以突出显示所选行。我的问题是 1)当我选择另一行时,它也会突出显示。我想只突出一行。如果用户选择另一行,则不应突出显示前一行。

2)突出显示行时如何更改文字和图像。

请让我解决这两个问题。

2 个答案:

答案 0 :(得分:2)

您可以在变量中保存点击位置,这样每当发生新的点击时,您只需用新点击的位置替换您的变量值,之后不要忘记使用 notifyItemChanged() ;现在,您的 bindview 非常简单,检查您选择的位置并更改项目的背景。

粗糙的前。

$config['last_link'] = 'Last';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';`

答案 1 :(得分:0)

android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:foreground="@drawable/xx_sel"

android:foreground="@drawable/xx_bg_sel" 我用它让我的相册照片项目pregress或fouce可以有一个面具。
愿它能帮到你。