国产探花免费观看_亚洲丰满少妇自慰呻吟_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));        }    }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 九龙坡区| 大冶市| 长春市| 赤峰市| 正定县| 历史| 依安县| 称多县| 宜兰县| 定安县| 香港| 江北区| 繁峙县| 申扎县| 锡林浩特市| 荔浦县| 张家川| 宁晋县| 阿巴嘎旗| 洪湖市| 庆安县| 阳东县| 宁远县| 湖北省| 体育| 林芝县| 奉新县| 赤城县| 开封县| 西安市| 遂昌县| 临潭县| 招远市| 定安县| 宁明县| 吴旗县| 康定县| 兴义市| 揭东县| 沂水县|