我正在创建一个包含带有嵌套CardView的RecyclerView的Android应用程序.我需要将每张其他卡换成不同的颜色.我@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;
}
}`
Run Code Online (Sandbox Code Playgroud)
该ViewHolder对象本身不是View.如果要更改整个列表项的背景,可能需要调用viewHolder.itemView.setBackgroundColor(...).的itemView的ViewHolder是什么View,你传递给构造函数.
| 归档时间: |
|
| 查看次数: |
6441 次 |
| 最近记录: |