-1

Y aura-t problème si j'utilise ArrayList<ArrayList<String>> en place de ArrayList<Object> pour alimenter une recyclerView? ou suis-je le seul cinglé présent ici?ArrayList <ArrayList <String>> vs ArrayList <Object>

J'ai des liens d'image dans chacun des éléments de la liste. Certains n'ont également aucun lien d'image.

Je sauvegarde les images pour la première fois lorsque j'affiche la liste puis j'obtiens les images de la carte SD si le nom de l'image correspond. J'ai aussi des noms d'images uniques.

Lorsque je défile ma vue, les éléments qui ne contiennent aucune image affichent également les images précédemment chargées mais ne dupliquent pas les textes.

J'utilise également

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 

Ces fonctions dans mon adaptateur.

Adapter.java

public class ChatBoxAdapter extends RecyclerView.Adapter<ChatBoxAdapter.MyViewHolder> { 

ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 

public class MyViewHolder extends RecyclerView.ViewHolder { 

    public TextView text,date; 
    public ImageView image; 

    public MyViewHolder(View view) { 
     super(view); 

     text = (TextView) view.findViewById(R.id.text); 
     date = (TextView) view.findViewById(R.id.date); 
     image = (ImageView) view.findViewById(R.id.image); 
    } 
} 

Context context; 
Bitmap bitmap; 

public ChatBoxAdapter(Context _context) { 
    context = _context; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.item_chat_box, parent, false); 

    return new MyViewHolder(itemView); 
} 

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

    String comment = Base.chatdatalist.get(position).get(3); 
    String image_url = Base.chatdatalist.get(position).get(4); 
    String date = Base.chatdatalist.get(position).get(5); 

    File imageFile = null; 

    if (image_url.startsWith(Base.baseUrl)) { 

     String image_name = image_url.substring(image_url.lastIndexOf("/")+1); 
     imageFile = new File(Environment.getExternalStorageDirectory().getPath() + "/Pictures/TMS Sent Images/" + image_name); 
     bitmap = null; 
     if (imageFile.exists()) { 

      BitmapFactory.Options options = new BitmapFactory.Options(); 

      long img_size = imageFile.length()/1024; 
      if (img_size <= 200) 
       options.inSampleSize = 4; 
      else 
       options.inSampleSize = 8; 

      bitmap = BitmapFactory.decodeFile(imageFile.toString(), options); 
     } 
    } 

    holder.text.setText(Html.fromHtml(comment, null, new MyTagHandler())); 

    if (position !=0 && !chat_date.equals(Base.chatdatalist.get(position - 1).get(15))) 
     holder.date.setVisibility(View.VISIBLE); 
    if (position == 0) 
     holder.date.setVisibility(View.VISIBLE); 


    if (bitmap != null) { 
     holder.image.setImageBitmap(bitmap); 
     holder.image.setVisibility(View.VISIBLE); 
    } else 
     if (image_url.startsWith(Base.baseUrl)) { 
      holder.image.setVisibility(View.VISIBLE); 
      Picasso.with(context).load(image_url).into(holder.image); 
     } 
} 

@Override 
public int getItemCount() { 
    return Base.chatdatalist.size(); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 
} 

Quel peut être le problème?

Merci d'avance.

+0

cette question est claire, vous rencontrez un arraylist de ArrayLists suggère qu'il existe un à plusieurs type de relation avec vos données, par exemple, un élément de liste peut avoir plusieurs chemins, est-ce le cas? – BiGGZ

+0

et ces fonctions sont dans la plupart des adaptateurs, publiez votre code d'adaptateur complet – BiGGZ

+0

Oui ... supposons que j'ai une liste de tableaux commentData, je peux faire 'commentData.add (arrayList);' – srv242

Répondre

0

Eh bien, si vous ne vous dérange pas jeter chaque fois: ArrayList<String> foo = (ArrayList<String>) commentData.get(i) par opposition à ArrayList<String> x = commentsData.get(i) sûr, utiliser ArrayList<Object>

+0

J'utilise commentData.get (i) .get (j); – srv242

+0

comprenez-vous les avantages de spécifier '' sur une 'Liste'? – BiGGZ

+0

Liste contenant un objet String? – srv242