Данные повторного просмотра хранятся в базе данных
Recycleview
используется в проекте. Карточный вид использует Imageview, ImageButton, TextView. Когда пользователь нажимает ссылку на сохраненное изображение ImageView в базе данных objectbox. Два изображения кнопки для отображения как и в отличие. когда пользователь нажимает кнопку "Нравится" или "Нет" в базе данных.
как сохранить изображение и как и в отличие от базы данных с помощью другого слушателя щелчка.
public class ThumbnailAdapter extends RecyclerView.Adapter<ThumbnailAdapter.MyViewHolder>{
private Context mContext;
private List<Thumbnail> albumList;
private List<Giphy> giphyList;
private BoxStore boxStore;
private Box<Giphy> box;
public class MyViewHolder extends RecyclerView.ViewHolder {
// public TextView title, count;
@BindView(R.id.imgThumbnail)
public ImageView imageView;
@BindView(R.id.imgButtonThumbUp)
public ImageButton imageButtonUP;
@BindView(R.id.imgButtonThumbDown)
public ImageButton imageButtonDown;
@BindView(R.id.tvThumbUpCount)
public TextView tvUpCount;
@BindView(R.id.tvThumbDownCount)
public TextView tvCountDown;
int countUP = 0;
int countDown = 0;
String url;
int id = 0;
int thumbUp,thumbDown;
public MyViewHolder(View view) {
super(view);
mContext = view.getContext();
//imageView = (ImageView) view.findViewById(R.id.imgThumbnail);
ButterKnife.bind(this,view);
int idCount = id++;
giphyList = new ArrayList<>();
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// String Title = title.getText().toString();
Thumbnail list = albumList.get(getAdapterPosition());
url = list.getVideoUrl();
giphyList.add(new Giphy(0,url,thumbUp,thumbDown));
Intent intent = new Intent(mContext,ExoPlayer.class);
intent.putExtra("url",list.getVideoUrl());
mContext.startActivity(intent);
}
});
imageButtonUP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
thumbUp = countUP++;
//box.put(countUP);
tvUpCount.setText(""+countUP);
}
});
imageButtonDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
thumbDown = countDown++;
// box.put(countDown);
tvCountDown.setText(""+countDown);
}
});
addData(new Giphy(0,url,thumbUp,thumbDown));
}
}
public ThumbnailAdapter(Context mContext, List<Thumbnail> albumList) {
this.mContext = mContext;
this.albumList = albumList;
// this.giphyList = giphyList;
boxStore = ((ObjectBox)mContext.getApplicationContext()).getBoxStore();
box = boxStore.boxFor(Giphy.class);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_list_item_album, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Thumbnail album = albumList.get(position);
Glide.with(mContext)
.asGif()
.load(album.getGif())
.apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
.into(holder.imageView);
}
@Override
public int getItemCount() {
return albumList.size();
}
public void addData(Giphy giphy){
box.put(giphy);
}
1 ответ
В onBindViewHolder установите позицию в качестве тега ImageButton:
holder.imageButtonUp.setTag(position);
holder.imageButtonDown.setTag(position);
Затем в вашем onClickListener ImageButton вы можете получить позиции:
int position = (Integer)view.getTag();
Thumbnail album = albumList.get(position);
Тогда делай что хочешь.
Но поскольку вы используете Glide, а Glide использует тег ImageView, вы должны сообщить Glide об использовании другого тега. Видеть это: