-1

Wird es ein Problem sein, wenn ich ArrayList<ArrayList<String>> anstelle von ArrayList<Object> verwenden für eine recyclerView bevölkern? oder bin ich der einzige Spinner hier?Arraylist <Arraylist <String>> vs Arraylist <Object>

Ich habe Bildlinks in jedem der Listenelemente. Einige haben auch keine Bildlinks.

Ich speichere die Bilder zum ersten Mal, wenn die Liste angezeigt wird und dann die Bilder von der SD-Karte holen, wenn der Bildname übereinstimmt. Ich habe auch eindeutige Bildnamen.

Wenn ich meine Ansicht scrolle, zeigen die Elemente, die keine Bilder enthalten, auch die zuvor geladenen Bilder an, aber es dupliziert die Texte nicht.

Ich verwende auch

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

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

diese Funktionen in meinem Adapter.

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; 
} 
} 

Was kann das Problem sein?

Vielen Dank im Voraus.

+0

diese Frage nicht klar ist, können Sie eine Arraylist von Arraylists, die schlägt vor, gibt es eine Eins-zu-viele Art der Beziehung mit Ihren Daten, zB kann ein Listeneintrag mehrere Pfade haben, ist das der Fall? – BiGGZ

+0

und diese Funktionen sind in den meisten Adaptern, geben Sie Ihren vollständigen Adapter Code – BiGGZ

+0

Ja ... angenommen, ich habe eine Array-Liste commentData, kann ich 'commentData.add (ArrayList);' – srv242

Antwort

0

Nun, wenn Sie dont Geist jedes Mal, Gießen: ArrayList<String> foo = (ArrayList<String>) commentData.get(i) im Gegensatz zu ArrayList<String> x = commentsData.get(i) sicher, verwenden ArrayList<Object>

+0

Ich verwende commentData.get (i) .get (j); – srv242

+0

Verstehst du die Vorteile von '' auf einer 'List'? – BiGGZ

+0

Liste mit String-Objekt? – srv242

Verwandte Themen