【发布时间】:2015-06-16 08:45:58
【问题描述】:
我正在使用 recyclerview 来列出我的数据,并且我需要将任何项目添加到用户最喜欢的列表中,所以我在适配器的视图中使用 png imageview,但是每当我单击 imageview 以将项目添加到我最喜欢的列表中,所有图像的颜色都会发生变化。但我只想更改单击的图像视图的颜色。 这是我的代码。
public class TopTwentyAdapter extends RecyclerView.Adapter<TopTwentyAdapter.mViewHolder> {
private final LayoutInflater mInflater;
private final List<TopTwentyModel> mModels;
private ImageLoader imageLoader;
private String url = "http:";
public TopTwentyAdapter(Context context, List<TopTwentyModel> models) {
mInflater = LayoutInflater.from(context);
mModels = models;
}
@Override
public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View itemView = mInflater.inflate(R.layout.twenty_list, parent, false);
return new mViewHolder(itemView);
}
@Override
public void onBindViewHolder(final mViewHolder holder, final int position) {
final TopTwentyModel model = mModels.get(position);
holder.bind(model);
holder.frame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView textView = (TextView) view.findViewById(R.id.textView24);
String s = textView.getText().toString();
int pos = Integer.parseInt(s);
final TopTwentyModel model = mModels.get(pos);
Intent intent = new Intent(AppController.getInstance().getApplicationContext(), OfferDetails.class);
intent.putExtra("id", model.getId());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
AppController.getInstance().getApplicationContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mModels.size();
}
public class mViewHolder extends RecyclerView.ViewHolder {
private final TextView txtViewTitle, subtitle, brandid;
private final NetworkImageView thumbnail;
private final RelativeLayout frame;
private final TextView data;
private final ImageView clip;
private ImageLoader imageLoader;
private CardView cardview;
//private MaterialRippleLayout ripple;
public mViewHolder(View itemView) {
super(itemView);
txtViewTitle = (TextView) itemView.findViewById(R.id.txttitle_toptwenty);
subtitle = (TextView) itemView.findViewById(R.id.sub_title_toptwenty);
thumbnail = (NetworkImageView) itemView.findViewById(R.id.thumbnail_topwenty);
frame = (RelativeLayout) itemView.findViewById(R.id.layer);
brandid = (TextView) itemView.findViewById(R.id.offerid);
cardview = (CardView) itemView.findViewById(R.id.card_view);
data = (TextView) itemView.findViewById(R.id.textView24);
clip = (ImageView) itemView.findViewById(R.id.add_fav);
Typeface face = Typeface.createFromAsset(AppController.getInstance().getAssets(), "font/trebuc.ttf");
subtitle.setTypeface(face);
txtViewTitle.setTypeface(face);
//ripple=(MaterialRippleLayout)itemView.findViewById(R.id.ripple);
clip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Resources res = AppController.getInstance().getResources();
final Drawable drawable = res.getDrawable(R.drawable.ic_clipped_32);
drawable.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP);
clip.setBackgroundDrawable(drawable);
notifyItemChanged(getAdapterPosition());
}
});
}
public void bind(TopTwentyModel model) {
data.setText(model.getFakeId());
String hexColor = (String.format("#%06X", (0xFFFFFF & model.getColor())));
frame.setBackgroundColor(model.getColor());
subtitle.setText(model.getTitle());
txtViewTitle.setText(model.getSubtitle());
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
String full_Url = "http://" + model.getBrandimage();
thumbnail.setImageUrl(full_Url, imageLoader);
}
}
【问题讨论】:
-
这整个问题都与this one有关。
-
您至少可以发布您的
ViewHolder的全部代码。如果没有整个代码,我只能猜测您可能做错了什么。 -
好的,请稍候,我刚刚发布它已发布。请看一看。
-
正如我所怀疑的,看看我的回答,它是解决你问题的方法。
-
检查我的答案。由于无法在 cmets 中发布更多代码,将在解决问题后删除。
标签: android android-recyclerview