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);