Android ViewHolder背景颜色

Ang*_*274 1 android

我正在创建一个包含带有嵌套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)

Bru*_*let 8

ViewHolder对象本身不是View.如果要更改整个列表项的背景,可能需要调用viewHolder.itemView.setBackgroundColor(...).的itemViewViewHolder是什么View,你传递给构造函数.