-1

Будет ли проблема, если я использую ArrayList<ArrayList<String>> вместо ArrayList<Object> для заселять recyclerView? или я единственная странная здесь?ArrayList <ArrayList <String>> против ArrayList <Object>

У меня есть ссылки на изображения в каждом из элементов списка. У некоторых также нет ссылок на изображения.

Я сохраняю изображения в первый раз при отображении списка, а затем извлекаю изображения из SD-карты, если совпадает с именем изображения. У меня также есть уникальные имена изображений.

Когда я прокручиваю свое представление, элементы, которые не содержат изображений, также показывают ранее загруженные изображения, но не дублируют тексты.

Я также использую

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

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

Эти функции в моем адаптере.

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

Что может быть проблема?

Заранее спасибо.

+0

этот вопрос не ясно, вы имея ArrayList из ArrayLists предлагает есть тип один-ко-многим отношений с вашими данными, например, один элемент списка может иметь несколько путей, это случай? – BiGGZ

+0

, и эти функции находятся в большинстве адаптеров, после вашего полного кода адаптера – BiGGZ

+0

Да ... предположим, у меня есть список комментариев к массиву, я могу сделать 'commentData.add (arrayList);' – srv242

ответ

0

Ну, если вы не возражаете литья каждый раз: ArrayList<String> foo = (ArrayList<String>) commentData.get(i) в отличие от ArrayList<String> x = commentsData.get(i) уверен, использовать ArrayList<Object>

+0

Я использую commentData.get (i) .get (j); – srv242

+0

Вы понимаете преимущества указания '' на 'Список'? – BiGGZ

+0

Список, содержащий объект String? – srv242

 Смежные вопросы

  • Нет связанных вопросов^_^