java holder 遍历_如何获取所有RecyclerView ViewHolder?

我想在点击其中一个项目时更改所有项目的文字颜色。我的问题是颜色仅在可见物品上发生变化。不可见项目的颜色根本不会改变。如何获取所有RecyclerView ViewHolder?

新功能: 另外我想知道如何改变点击项目的颜色。

EffectPanelRecyclerViewAdapter.java:

public class EffectPanelRecyclerViewAdapter extends RecyclerView.Adapter {

private ArrayList mDataset = null;

private MyItemClickListener mItemClickListener;

public EffectPanelRecyclerViewAdapter(ArrayList datats) {

mDataset = datats;

}

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

public TextView mTextView;

private MyItemClickListener mListener;

public ViewHolder(View v, MyItemClickListener listener) {

super(v);

mListener = listener;

mTextView = (TextView) v.findViewById(R.id.tv);

v.setOnClickListener(this);

}

@Override

public void onClick(View v) {

if (mListener != null) {

Log.d("hello", "getAdapterPosition=" + getAdapterPosition());

mListener.onItemClick(v, getAdapterPosition());

}

}

}

@Override

public int getItemCount() {

return mDataset.size();

}

public interface MyItemClickListener {

public void onItemClick(View view, int postion);

}

/**

* ViewHolder

*/

@Override

public EffectPanelRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

// create a new view

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);

// set the view's size, margins, paddings and layout parameters

ViewHolder vh = new ViewHolder(v, mItemClickListener);

Log.d("hello", "onCreateViewHolder");

return vh;

}

@Override

public void onBindViewHolder(ViewHolder holder, final int position) {

Log.d("hello", "onBindViewHolder,position=" + position);

ViewHolder mHolder = (ViewHolder) holder;

mHolder.mTextView.setText(mDataset.get(position));

mHolder.mTextView.setTag(position);

mHolder.mTextView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mItemClickListener.onItemClick(v, position);

}

});

}

public void setOnItemClickListener(MyItemClickListener listener) {

this.mItemClickListener = listener;

}

}

MainActivity.java:

public class MainActivity extends AppCompatActivity {

private ArrayList mDatas;

private RecyclerView mRecyclerView;

private EffectPanelRecyclerViewAdapter mAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initDatas();

mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview_horizontal);

final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);

linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);

mRecyclerView.setLayoutManager(linearLayoutManager);

mAdapter = new EffectPanelRecyclerViewAdapter(mDatas);

mRecyclerView.setAdapter(mAdapter);

mAdapter.setOnItemClickListener(new EffectPanelRecyclerViewAdapter.MyItemClickListener() {

@Override

public void onItemClick(View view, int position) {

Toast.makeText(MainActivity.this, "position=" + position, Toast.LENGTH_SHORT).show();

//I want to change all item text color.How to do it ?

for (int i = 0; i < mAdapter.getItemCount(); i++) {

EffectPanelRecyclerViewAdapter.ViewHolder viewHolder = (EffectPanelRecyclerViewAdapter.ViewHolder) mRecyclerView.findViewHolderForAdapterPosition(i);

if (viewHolder != null) {

viewHolder.mTextView.setTextColor(Color.RED);

Log.d("hellotom", "if i=" + i);

} else {

Log.d("hellotom", "else i=" + i);

}

}

}

});

}

private void initDatas() {

mDatas = new ArrayList();

for (int i = 0; i < 10; i++) {

mDatas.add(i, "i=" + i);

}

}

}

activity_main.xml中:

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/id_recyclerview_horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_centerVertical="true"

android:paddingBottom="18dp"

android:paddingTop="15dp"

android:scrollbars="none" />

item.xml:

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/tv"

android:layout_width="100dp"

android:layout_height="100dp"

android:drawableTop="@drawable/ic_launcher_select"

android:textColor="@color/select_color"

android:gravity="center"

android:text="@string/app_name" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值