如何将选定的recyclerview列表项更改为标记为其他颜色

阿拉苏

我需要将所选列表视图项目的颜色更改为其他颜色。我必须为下面的代码实现更改列表项颜色的代码,但是如果在滚动后选择可见项的第一个项目,则必须更改每个新可见项的颜色。任何人都可以建议我寻求最佳解决方案。

代码段。

@Override
    public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
        PlayListItem nature = mItems.get(i);
        try {
            if (nature.getmInnerTitle() != null && nature.getmInnerTVName() != null) {
                viewHolder.tvInnerTitle.setText(nature.getmInnerTitle());

                mVideoID = nature.getmInnerVideoID();
                Picasso.with(activity)
                        .load(nature.getmInnerThumpnailURL())
               /* .placeholder(R.drawable.my_thumnail_small)*/
                        .into(viewHolder.imgInnerThumbnail);
                viewHolder.tvInnerTVName.setText("by " + nature.getmInnerTVName());
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }


        viewHolder.item_view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                System.out.println("Save Value------Inner-------->" + save);

                Toast.makeText(activity, "Position---->" + i + " Playlist ID : ", Toast.LENGTH_LONG).show();
                // Change BG color for selected List Item

                VideoPlayActivity.mRecyclerView.getChildAt(i).setBackgroundColor(
                        Color.parseColor("#EEEEEE"));

                System.out.println("Save Value------1-------->" + save);
                if (save != -1 && save != i) {
                    VideoPlayActivity.mRecyclerView.getChildAt(save).setBackgroundColor(
                            Color.parseColor("#FFFFFF"));
                    System.out.println("Save Value------2-------->" + save);
                }

                save = i;
                System.out.println("Save Value------3-------->" + save);

            }
        });
        viewHolder.itemView.post(new Runnable() {
            @Override
            public void run() {
                int cellWidth = viewHolder.itemView.getWidth();// this will give you cell width dynamically
                int cellHeight = viewHolder.itemView.getHeight();// this will give you cell height dynamically
                mdynamicHeight.HeightChange(i, cellHeight); //call your iterface hear
            }
        });
    }
阿拉苏

是的,最后我得到了答案。这里是工作代码段。

private int focusedItem = 0;

@Override
public void onAttachedToRecyclerView(final RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);

    // Handle key up and key down and attempt to move selection
    recyclerView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            RecyclerView.LayoutManager lm = recyclerView.getLayoutManager();

            // Return false if scrolled to the bounds and allow focus to move off the list
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
                    return tryMoveSelection(lm, 1);
                } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
                    return tryMoveSelection(lm, -1);
                }
            }

            return false;
        }
    });
}

private boolean tryMoveSelection(RecyclerView.LayoutManager lm, int direction) {
    int tryFocusItem = focusedItem + direction;

    // If still within valid bounds, move the selection, notify to redraw, and scroll
    if (tryFocusItem >= 0 && tryFocusItem < getItemCount()) {
        notifyItemChanged(focusedItem);
        focusedItem = tryFocusItem;
        notifyItemChanged(focusedItem);
        lm.scrollToPosition(focusedItem);
        return true;
    }

    return false;
}

@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
    PlayListItem nature = mItems.get(i);
    try {
        if (nature.getmInnerTitle() != null && nature.getmInnerTVName() != null) {
            viewHolder.tvInnerTitle.setText(nature.getmInnerTitle());

            mVideoID = nature.getmInnerVideoID();
            Picasso.with(activity)
                    .load(nature.getmInnerThumpnailURL())
           /* .placeholder(R.drawable.my_thumnail_small)*/
                    .into(viewHolder.imgInnerThumbnail);
            viewHolder.tvInnerTVName.setText("by " + nature.getmInnerTVName());
        }
    } catch (NullPointerException e) {
        e.printStackTrace();
    }

    viewHolder.itemView.setSelected(focusedItem == i);

    viewHolder.itemView.post(new Runnable() {
        @Override
        public void run() {
            int cellWidth = viewHolder.itemView.getWidth();// this will give you cell width dynamically
            int cellHeight = viewHolder.itemView.getHeight();// this will give you cell height dynamically
            mdynamicHeight.HeightChange(i, cellHeight); //call your iterface hear
        }
    });
}

@Override
public int getItemCount() {
    return mItems.size();
}

class ViewHolder extends RecyclerView.ViewHolder {
    public ImageView imgInnerThumbnail;
    public TextView tvInnerTitle;
    public TextView tvInnerVideoID;
    public TextView tvInnerCount;
    public TextView tvInnerTVName;
    public View item_view;

    public ViewHolder(View itemView) {
        super(itemView);
        imgInnerThumbnail = (ImageView) itemView.findViewById(R.id.img_innerView);
        tvInnerTitle = (TextView) itemView.findViewById(R.id.txt_InnerTitle);
        //tvInnerID = (TextView) itemView.findViewById(R.id.);
        tvInnerTVName = (TextView) itemView.findViewById(R.id.txt_InnerTVName);
        item_view = itemView;

        item_view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                notifyItemChanged(focusedItem);
                focusedItem = getLayoutPosition();
                notifyItemChanged(focusedItem);
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将时间格式更改为其他格式?

来自分类Dev

如何将ssh更改为其他来宾

来自分类Dev

如何将REL属性更改为其他

来自分类Dev

Linq如何将列表项与其他列表项合并

来自分类Dev

如何根据其他项目更改选定列表项目?

来自分类Dev

如何将某些单词更改为训练列表的标记形式

来自分类Dev

如何将下拉列表中的其他选定值插入数据库

来自分类Dev

将除选定以外的所有其他状态更改为未选定

来自分类Dev

如何将htdocs更改为XAMPP中的其他目录?

来自分类Dev

如何将导航栏标题更改为图像?其他方法无效

来自分类Dev

如何将Vim的内部寻呼机更改为其他内容?

来自分类Dev

如何将应用默认主题更改为其他应用主题?

来自分类Dev

如何将默认的Module :: Build / Test :: More目录从“ lib”更改为其他目录?

来自分类Dev

APEX:如何将区域模板更改为其他主题之一?

来自分类Dev

如何将默认等级字段从分数更改为Solr中的其他字段?

来自分类Dev

如何将Android上的三点按钮更改为其他按钮

来自分类Dev

如何将Wine的目录.wine更改为其他目录

来自分类Dev

如何将ANTD表文本更改为其他语言

来自分类Dev

在使用Flask的本地系统上,如何将URL从“ localhost”更改为其他名称?

来自分类Dev

如何将AOSP上的Adb端口从5555更改为其他

来自分类Dev

如何将Wine的目录.wine更改为其他目录

来自分类Dev

如何将字符串的字符更改为其他字符?

来自分类Dev

如何将Unity的super-t绑定更改为其他绑定?

来自分类Dev

APEX:如何将区域模板更改为其他主题之一?

来自分类Dev

如何将Microsoft OneNote的默认字体从Calibri更改为其他字体

来自分类Dev

如何将xml字段的标签更改为.ini文件中的其他字符串?

来自分类Dev

linux +如何将磁盘名称更改为其他名称

来自分类Dev

如何将ALT + TAB热键更改为其他内容?

来自分类Dev

如何将子 fxml 的父级更改为其他父级?

Related 相关文章

  1. 1

    如何将时间格式更改为其他格式?

  2. 2

    如何将ssh更改为其他来宾

  3. 3

    如何将REL属性更改为其他

  4. 4

    Linq如何将列表项与其他列表项合并

  5. 5

    如何根据其他项目更改选定列表项目?

  6. 6

    如何将某些单词更改为训练列表的标记形式

  7. 7

    如何将下拉列表中的其他选定值插入数据库

  8. 8

    将除选定以外的所有其他状态更改为未选定

  9. 9

    如何将htdocs更改为XAMPP中的其他目录?

  10. 10

    如何将导航栏标题更改为图像?其他方法无效

  11. 11

    如何将Vim的内部寻呼机更改为其他内容?

  12. 12

    如何将应用默认主题更改为其他应用主题?

  13. 13

    如何将默认的Module :: Build / Test :: More目录从“ lib”更改为其他目录?

  14. 14

    APEX:如何将区域模板更改为其他主题之一?

  15. 15

    如何将默认等级字段从分数更改为Solr中的其他字段?

  16. 16

    如何将Android上的三点按钮更改为其他按钮

  17. 17

    如何将Wine的目录.wine更改为其他目录

  18. 18

    如何将ANTD表文本更改为其他语言

  19. 19

    在使用Flask的本地系统上,如何将URL从“ localhost”更改为其他名称?

  20. 20

    如何将AOSP上的Adb端口从5555更改为其他

  21. 21

    如何将Wine的目录.wine更改为其他目录

  22. 22

    如何将字符串的字符更改为其他字符?

  23. 23

    如何将Unity的super-t绑定更改为其他绑定?

  24. 24

    APEX:如何将区域模板更改为其他主题之一?

  25. 25

    如何将Microsoft OneNote的默认字体从Calibri更改为其他字体

  26. 26

    如何将xml字段的标签更改为.ini文件中的其他字符串?

  27. 27

    linux +如何将磁盘名称更改为其他名称

  28. 28

    如何将ALT + TAB热键更改为其他内容?

  29. 29

    如何将子 fxml 的父级更改为其他父级?

热门标签

归档