2016-02-26 98 views
0

我已经使用this文章在android中创建卡。这是完美的工作!我想以编程方式设置每张卡片的背景颜色。更改Android RecyclerView卡背景dynamicall

我已经检查this后在左右,但不知何故,我不能用公认的答案,说

CardView card = ... 
card.setCardBackgroundColor(color); 

这里是适配器类

import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import java.util.ArrayList; 

public class MyRecyclerViewAdapter extends RecyclerView 
     .Adapter<MyRecyclerViewAdapter 
     .DataObjectHolder> { 
    private static String LOG_TAG = "MyRecyclerViewAdapter"; 
    private ArrayList<DataObject> mDataset; 
    private static MyClickListener myClickListener; 

    public static class DataObjectHolder extends RecyclerView.ViewHolder 
      implements View 
      .OnClickListener { 
     TextView label; 
     TextView dateTime; 

     public DataObjectHolder(View itemView) { 
      super(itemView); 
      label = (TextView) itemView.findViewById(R.id.textView); 
      dateTime = (TextView) itemView.findViewById(R.id.textView2); 
      Log.i(LOG_TAG, "Adding Listener"); 
      itemView.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      myClickListener.onItemClick(getAdapterPosition(), v); 
     } 
    } 

    public void setOnItemClickListener(MyClickListener myClickListener) { 
     this.myClickListener = myClickListener; 
    } 

    public MyRecyclerViewAdapter(ArrayList<DataObject> myDataset) { 
     mDataset = myDataset; 
    } 

    @Override 
    public DataObjectHolder onCreateViewHolder(ViewGroup parent, 
               int viewType) { 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.card_view_row, parent, false); 

     DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
     return dataObjectHolder; 
    } 

    @Override 
    public void onBindViewHolder(DataObjectHolder holder, int position) { 
     holder.label.setText(mDataset.get(position).getmText1()); 
     holder.dateTime.setText(mDataset.get(position).getmText2()); 
    } 

    public void addItem(DataObject dataObj, int index) { 
     mDataset.add(index, dataObj); 
     notifyItemInserted(index); 
    } 

    public void deleteItem(int index) { 
     mDataset.remove(index); 
     notifyItemRemoved(index); 
    } 

    @Override 
    public int getItemCount() { 
     return mDataset.size(); 
    } 

    public interface MyClickListener { 
     public void onItemClick(int position, View v); 
    } 
} 

如何设置CardView的颜色编程。

感谢您的帮助。

+0

这个片段不是代码的作品?你可以发布你的适配器类吗? –

+0

我编辑了我的问题并输入了适配器类 –

+0

其中是更改背景卡颜色的代码? –

回答

0

所以你可以做这样的事情:

@Override 
public void onBindViewHolder(DataObjectHolder holder, int position) { 
    holder.label.setText(mDataset.get(position).getmText1()); 
    holder.dateTime.set 

    if(position % 2 == 0){ 

     holder.card.setCardBackgroundColor(Color.parseColor("#E6E6E6")); 

    } else { 

     holder.card.setCardBackgroundColor(Color.parseColor("#000000")); 
    } 
}