我正在创建一个 Android 应用程序,其中包含带有嵌套 CardView 的 RecyclerView。我需要将其他所有卡片更换为不同的颜色。我在用@Override
覆盖onBindViewHolder(ViewHolder vh, int pos)
方法。我需要从该方法更改背景颜色(我假设),但是没有方法可以设置 ViewHolder 的背景颜色!
抱歉我的菜鸟身份,我现在正在学习Android开发。
-Ben
编辑:代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_9);
pieRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
pieRecyclerView.setHasFixedSize(true);
pies = makePies();
pieLayoutManager = new LinearLayoutManager(this);
pieRecyclerView.setLayoutManager(pieLayoutManager);
PieAdapter adapter = new PieAdapter(pies);
pieRecyclerView.setAdapter(adapter);
}
public class PieAdapter extends RecyclerView.Adapter<ViewHolder> {
Context mContext;
ArrayList<Pie> mPies;
LayoutInflater mInflater;
public PieAdapter(ArrayList<Pie> pies) {
mPies = pies;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Pie currentPie = mPies.get(position);
holder.textViewName.setText(currentPie.mName);
holder.textViewDescription.setText(currentPie.mDescription);
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String price = formatter.format(currentPie.mPrice);
holder.textViewPrice.setText(price);
}
@Override
public int getItemCount() {
return mPies.size();
}
}
private class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName;
public TextView textViewDescription;
public TextView textViewPrice;
public ViewHolder(View v) {
super(v);
textViewName = (TextView) v.findViewById(R.id.textViewName);
textViewDescription = (TextView) v.findViewById(R.id.textViewDescription);
textViewPrice = (TextView) v.findViewById(R.id.textViewPrice);
}
}
private ArrayList<Pie> makePies() {
ArrayList<Pie> pies = new ArrayList<Pie>();
pies.add(new Pie("Apple", "An old-fashoned favorite.", 1.5));
pies.add(new Pie("Blueberry", "Made with fresh Maine blueberries.", 1.5));
pies.add(new Pie("Cherry", "Delicious and fresh made daily", 2.0));
pies.add(new Pie("Coconut Cream", "A customer favorite.", 2.5));
return pies;
}
private class Pie {
String mName;
String mDescription;
double mPrice;
public Pie(String name, String description, double price) {
this.mName = name;
this.mDescription = description;
this.mPrice = price;
}
}`
The ViewHolder
对象本身不是一个View
。如果你想改变整个列表项的背景,你可能想调用viewHolder.itemView.setBackgroundColor(...)
. The itemView
of a ViewHolder
是无论什么View
你传递到构造函数中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)