0

Das ImageView wird für jedes RecyclerView-Element generiert und jedes Element hat eine andere Anzahl von ImageViews. Ich habe die ImageViews generiert, aber jetzt muss ich OnClick für jedes Bild in jedem Element generiert setzen. Ich habe keine Ahnung, wie ich das machen soll. Jede Hilfe wäre willkommen.So stellen Sie Onclick für ImageViews ein, die dynamisch im Adapter für RecyclerView generiert werden

Image Code generieren in Adapter:

@Override 
public void onBindViewHolder(ListHolder holder, final int position) { 

    holder.name.setText(names[position]); 
    // BELOW CODE IS THERE TO DYNAMICALLY ADD IMAGES 
    LinearLayout ll = new LinearLayout(c); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    ll.setLayoutParams(params); 
    for(int i=0;i<num[position];i++) 
    { 
     holder.image = new ImageView(c); 
     holder.image.setLayoutParams(new ViewGroup.LayoutParams(200, 
       200)); 
     holder.image.setImageResource(R.mipmap.ic_launcher); 
     ll.addView(holder.image); 
    } 
    holder.horizontalScrollView.addView(ll); 
} 

Der obige Code innerhalb des Adapters ist, werde ich mehr als glücklich, Sie bei den gesamten Code schaffen Sie es brauchen. Bitte sagen Sie mir, wie Sie die Klickereignisse dieser generierten Bilder behandeln. Vielen Dank.

+1

es genauso gemacht wird .. Sie nur gleiche Weise hinzufügen müssen –

+1

OnClickListener auf holder.image @programmingandroid Sie mit den allgemeinen eine versucht haben, weil ich – Nisarg

+0

@Nisarg arbeiten werde dann aber wie füge ich verschiedene Onclick für verschiedene Bilder in der gleichen Liste? – programmingandroid

Antwort

1

Sie können das einfach auf dem holder.image Objekt tun. Hier ist ein Beispiel basierend auf Ihrem Code:

for(int i=0;i<num[position];i++) 
    { 
     holder.image = new ImageView(c); 
     holder.image.setLayoutParams(new ViewGroup.LayoutParams(200, 
       200)); 
     holder.image.setImageResource(R.mipmap.ic_launcher); 
     //setting the onClickListener to image 
     holder.image.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //image clicked, do stuff 
      } 
     }); 
     ll.addView(holder.image); 
    } 

Ich hoffe, das hilft. Probieren Sie es aus und lassen Sie es mich wissen.

+0

mit dieser Methode, wie bekomme ich die Ressource des Bildes und des Namens [pos] der Liste, in der sich die Bilder befinden? – programmingandroid

1
@Override 
public void onBindViewHolder(ListHolder holder, final int position) { 

holder.name.setText(names[position]); 
// BELOW CODE IS THERE TO DYNAMICALLY ADD IMAGES 
LinearLayout ll = new LinearLayout(c); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
ll.setLayoutParams(params); 
for(int i=0;i<num[position];i++) 
{ 
    ImageView img = new ImageView(c); 
    img.setLayoutParams(new ViewGroup.LayoutParams(200, 
      200)); 
    img.setImageResource(R.mipmap.ic_launcher); 
    img.setId(i); 

    ll.addView(img); 

    img.setOnClickListner(OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    })); 


} 
holder.horizontalScrollView.addView(ll); 
} 
Verwandte Themen