Reputation: 1
The solution to my problem must be simple, but I still can't unlock it. I have seen some similar issues here, but because I am only a beginner, I am having problems implementing the suggested solutions, in my specific case which is the following:
this is my UI, representing my issue
My ImoClass: public class ImoClass {
private int imo;
public ImoClass(int imoj) {this.imo = imoj;}
public int getImo() {return imo;}
My RecyclerViewAdapater: public class ImoAdapterCLICK extends RecyclerView.Adapter {
public class MeuViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView imagem, emoji;
public MeuViewHolder(View itemView) {
super(itemView);
imagem = itemView.findViewById(R.id.imagem_item);
itemView.setOnClickListener(this);
emoji=itemView.findViewById(R.id.imagem_select);
}
@Override
public void onClick(View v) {
//TODO: show image clicked in ImageView "emoji"
// I have tested this: emoji.setImageResource(objetoClicked.getImo()) but without success !!
}
}
private final ArrayList<ImoClass> meusItems;
public ImoAdapterCLICK(ArrayList<ImoClass> arrayList) {
this.meusItems = arrayList;
}
@Override
public MeuViewHolder onCreateViewHolder(ViewGroup parent, int i) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid, parent, false);
MeuViewHolder viewHolder = new MeuViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MeuViewHolder holder, int position) {
ImoClass objeto = meusItems.get(position);
holder.imagem.setImageResource(objeto.getImo());
}
@Override
public int getItemCount() {
return meusItems.size();
}
}
My "MainActivity": public class ImoRecyclerViewCLICK extends AppCompatActivity {
private RecyclerView recyclerView;
private ImoAdapterCLICK adapter;
public ArrayList<ImoClass> meusItems;
private GridLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imo_grid);
recyclerView = findViewById(R.id.recycler);
layoutManager = new GridLayoutManager(this, 5);
recyclerView.setLayoutManager(layoutManager);
meusItems = new ArrayList<>();
ImoClass item1 = new ImoClass(R.mipmap.imo1);
ImoClass item2 = new ImoClass(R.mipmap.imo2);
...
ImoClass item2 = new ImoClass(R.mipmap.imo30);
meusItems.add(item1);
meusItems.add(item2);
...
meusItems.add(item30);
adapter = new ImoAdapterCLICK(meusItems);
recyclerView.setAdapter(adapter);
}
}
I really appreciate any help. Thank you!! You've been a great help to me!!
Upvotes: 0
Views: 74
Reputation: 4035
According to how I understand the question, do this in onBindViewHolder
:
@Override
public void onBindViewHolder(MeuViewHolder holder, int position) {
ImoClass objeto = meusItems.get(position);
holder.imagem.setImageResource(objeto.getImo());
//on click image
holder.imagem.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//set the image clicked in emoji view
holder.emoji.setImageResource(objeto.getImo());
}
});
}
Remove this line from MeuViewHolder
itemView.setOnClickListener(this);
Upvotes: 0