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.
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
und diese Funktionen sind in den meisten Adaptern, geben Sie Ihren vollständigen Adapter Code – BiGGZ
Ja ... angenommen, ich habe eine Array-Liste commentData, kann ich 'commentData.add (ArrayList);' – srv242