0
我工作Recyclerview.I有一個複選框,併成功地在我的項目background.This更改背景顏色是我的適配器代碼:Recyclerview變化項目由顏色位置在Android中
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private List<VinLoadModel> moviesList;
private int activeColor=Color.parseColor("#c6ffc6");
private int passivecolor=Color.parseColor("#ffc6c6");
private onClickListener onClickListener;
private int selectedPosition;
public RecyclerViewAdapter.onClickListener getOnClickListener() {
return onClickListener;
}
public void setOnClickListener(RecyclerViewAdapter.onClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView vin, polygon;
public LinearLayout linearLayout;
public CheckBox checkBox;
public Button info;
public MyViewHolder(View view) {
super(view);
vin = (TextView) view.findViewById(R.id.vin_code);
polygon = (TextView) view.findViewById(R.id.polygon_name);
linearLayout = (LinearLayout) view.findViewById(R.id.mainLayout);
info=(Button)view.findViewById(R.id.info_click);
checkBox = (CheckBox) view.findViewById(R.id.checkBox);
}
}
public RecyclerViewAdapter(List<VinLoadModel> moviesList,int selectedPosition) {
this.moviesList = moviesList;
this.selectedPosition=selectedPosition;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.vin_load_item_adapter, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
VinLoadModel movie = moviesList.get(position);
holder.vin.setText(movie.getVin());
holder.info.setText("i".toLowerCase());
holder.polygon.setText(movie.getPolygon());
if(selectedPosition==position)
holder.linearLayout.setBackgroundColor(activeColor);
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
moviesList.get(position).setColorChanged(true);
holder.linearLayout.setBackgroundColor(activeColor);
}
else
{
moviesList.get(position).setColorChanged(false);
holder.linearLayout.setBackgroundColor(passivecolor);
}
}
});
holder.info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onClickListener!=null)
onClickListener.onClick(position);
}
});
}
@Override
public int getItemCount() {
return moviesList.size();
}
public interface onClickListener
{
void onClick(int position);
}
現在我想改變項目背景顏色的Position.I寫了addOnItemTouchListener方法,但我有兩個問題。 當我使用這種方法,複選框偵聽器不working.is它可能工作兩種方法? 和第二的疑難問題。例如可以冷杉元素的背景顏色改變,但是當我點擊第二個要素,第一要素的背景顏色是默認的(白色)
customListview.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), customListview, new RecyclerTouchListener.ClickListener() {
@Override
public void onClick(View view, int position) {
vinLoadAdapter = new RecyclerViewAdapter(vinLoadModels,position);
customListview.setAdapter(vinLoadAdapter);
}
@Override
public void onLongClick(View view, int position) {
}
}));
我想,如果我改變首先改變背景顏色然後點擊第二項,第一個背景顏色也改變了(不是默認白色) 我怎麼能解決我的問題? 感謝大家