单击ListView项目时,如何为ListView的文本涂上颜色的文本,当我单击其他项目时,我想要的是默认颜色


public void setDataToList() {
    liveTvAdapter = new LiveTvAdapter(this, channelList);
    horizonatalListViewForLiveTv.setAdapter(liveTvAdapter);
    horizonatalListViewForLiveTv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView textView;
            for (int i = 0; i < parent.getChildCount(); i++) {
                if (position == i) {
                    textView = (TextView) parent.getChildAt(i).findViewById(R.id.live_tv_chanel_text);
                    textView.setTextColor(Color.parseColor("#63a0b9"));
                } else {
                    textView = (TextView) parent.getChildAt(i).findViewById(R.id.live_tv_chanel_text);
                    textView.setTextColor(Color.BLACK);
                }
            }
            if (videoView != null) {
                videoView = null;
            }
            setValue(position);

        }
    });
}

这是我正在做的代码之上。在这里,我从父母的孩子那里获得文本视图。在此代码中,当我单击第三个或第四项时,尽管其他项目颜色为颜色,但未对项目进行彩色。

在适配器的onclick内您可以使用notifyIteMchanged(oldposition)

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemChanged(int, java.lang.Object)

我找到了答案。我这样做了: -

首先,我在适配器中做了一种方法

 public void setSelectedIndex(int ind) {
            selectedIndex = ind;   // selectedIndex global variable
            notifyDataSetChanged();
        }

,而不是

 public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolderForLiveTV holderForLiveTV;
 if (selectedIndex != -1 && position == selectedIndex) {
                holderForLiveTV.channelName.setTextColor(Color.parseColor("#63a0b9"));
            } else {
                holderForLiveTV.channelName.setTextColor(Color.BLACK);
            }
 return convertView;
}

然后我以这种方式设置选定项目的位置: -

liveTvAdapter.setSelectedIndex(position);

最新更新