国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

修改recyclerview指定位置背景色

2019-11-09 16:29:30
字體:
來源:轉載
供稿:網友

這是一個瞎寫的小說閱讀器,通過點擊章節列表(recyclerview)中的選項或者其它方式更新正文文本框內容,并且將章節列表中的相應view設置為紅色背景(R.color.colorAccent)。

holder.chapterName是一個文本框,內容為章節名稱;

holder.chapterView是holder.chapterName + 一條下劃線,基本上算是同一個View

因為改變章節的方式并不只是點擊,所以修改方法不在onClick方法里寫。

在adapter里添加一個觸發修改的方法,由外部調用(getContent方法內包含接口方法,即使點擊也一樣),將當前章節名稱(默認不重復)和該章節在章節列表中的位置傳入后再調用notifyItemChanged方法,這樣就會觸發onBindViewHolder。

在onBindViewHolder里判斷recyclerview中的文字內容是否和當前章節名稱相同,如果相同就設置為紅色背景,并將lastSelectedView設置為這個view;如果不同就設置為天藍色背景。

在每次觸發onBindViewHolder時,當recyclerview中的文字內容和當前章節名稱相同,如果lastSelectedView和這個view不是同一個view,說明當前章節變了,需要先把lastSelectedView的背景設置成天藍色,再將當前view設置為紅色背景,將lastSelectedView設置為這個新的view。

ps:在onBindViewHolder里如果根據position而不是章節名來設置的話,會出現這種問題:選中的章節item會變紅,但是列表上下滑動會發現還有別的章節item也變紅了。

@Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chapter_item, parent, false);        final ViewHolder holder = new ViewHolder(view);        holder.chapterView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                getContent(holder.getAdapterPosition());                drawerLayout.closeDrawer(GravityCompat.START);            }        });        return holder;    }        public void selectItem(int position, String selectedChapter) {        this.selectedChapter = selectedChapter;        notifyItemChanged(position);    }        PRivate String selectedChapter;    private View lastSelectedView;    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        String chapterName = mNovelInfo.ChapterNameList.get(position);        holder.chapterName.setText(chapterName);        if (chapterName.equals(selectedChapter)) {            if (lastSelectedView != null && lastSelectedView != holder.chapterName) {                lastSelectedView.setBackgroundColor(ContextCompat.getColor(MyUtil.activeActivity, R.color.skyblue));            }            holder.chapterName.setBackgroundColor(ContextCompat.getColor(MyUtil.activeActivity, R.color.colorAccent));            lastSelectedView = holder.chapterName;        } else {            holder.chapterName.setBackgroundColor(ContextCompat.getColor(MyUtil.activeActivity, R.color.skyblue));        }    }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平利县| 长乐市| 若尔盖县| 岚皋县| 葫芦岛市| 库尔勒市| 龙川县| 嵊泗县| 当涂县| 苍山县| 徐闻县| 荣昌县| 井研县| 锦屏县| 来凤县| 万年县| 博客| 易门县| 河南省| 卢湾区| 延长县| 南丰县| 米林县| 舟山市| 开封市| 岳阳县| 武功县| 华阴市| 米林县| 防城港市| 买车| 固原市| 宜兰市| 凤凰县| 抚顺县| 尖扎县| 襄城县| 永登县| 太原市| 泰和县| 蒙自县|