-4

Существует несколько фрагментов. В каждом из фрагментов у меня есть recyclerView с адаптацией). В то время, когда я создаю 3-й адаптер, я понял, что в принципе они похожи по своей структуре (ImageView, textView, textView), только массивы, в которых я сохраняю текст и изображения разными. Ну, на самом деле я предложил идею, насколько это возможно, и, самое главное, использовать ли один адаптер для всех моих фрагментов? На данный момент мой адаптер:Как я могу использовать один адаптер для нескольких фрагментов?

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { 

private String[] titles = {"Chapter One", 
     "Chapter Two", 
     "Chapter Three", 
     "Chapter Four", 
     "Chapter Five", 
     "Chapter Six", 
     "Chapter Seven", 
     "Chapter Eight"}; 

private String[] details = {"Item one details", 
     "Item two details", "Item three details", 
     "Item four details", "Item file details", 
     "Item six details", "Item seven details", 
     "Item eight details"}; 

private int[] images = { R.drawable.android_image_1, 
     R.drawable.android_image_2, 
     R.drawable.android_image_3, 
     R.drawable.android_image_4, 
     R.drawable.android_image_5, 
     R.drawable.android_image_6, 
     R.drawable.android_image_7, 
     R.drawable.android_image_8 }; 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public int currentItem; 
    public ImageView itemImage; 
    public TextView itemTitle; 
    public TextView itemDetail; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     itemImage = (ImageView)itemView.findViewById(R.id.item_image); 
     itemTitle = (TextView)itemView.findViewById(R.id.item_title); 
     itemDetail = 
       (TextView)itemView.findViewById(R.id.item_detail); 

     itemView.setOnClickListener(new View.OnClickListener() { 
      @Override public void onClick(View v) { 
       int position = getAdapterPosition(); 

       Snackbar.make(v, "Click detected on item " + position, 
         Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.card_layout, viewGroup, false); 
    ViewHolder viewHolder = new ViewHolder(v); 
    return viewHolder; 
} 


@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    viewHolder.itemTitle.setText(titles[i]); 
    viewHolder.itemDetail.setText(details[i]); 
    viewHolder.itemImage.setImageResource(images[i]); 
} 

@Override 
public int getItemCount() { 
    return titles.length; 
} 

}

+0

преобразовать int в строку –

+0

Поделиться кодом TextNumeric. –

+0

Что такое TextNumeric? – Rajendra

ответ

1

Проверить object.getType(), что это возвращение. Проблема связана с этим. Я уверен, что он возвращает строку. Это проблема.

1

попробовать это потому, что из вашего вопроса, кажется, вы получаете целое число, но строка, как ожидается,

case TYPE_TEXTVIEW: 
       ((NumericViewHolder) holder).title.setText(String.valueOf(object.getTitle())); 
       break; 

case TYPE_EDITVIEW: 
       ((DropDownViewHolder) holder).title_options.setText(String.ValueOf(object.getTitle())); 
       break; 
+0

Спасибо! Также добавьте свое решение в код;) – Morozov

+0

Я уже выбрал из int в строку в моем коде, если u check –

+0

Я добавляю +1) Но также AS excrete: TYPE_TEXTVIEW и TYPE_EDITVIEW – Morozov

1

просто изменить ваши статические типы переменных, как:

public static final String TYPE_TEXTVIEW = "0"; 
public static final String TYPE_EDITVIEW = "1"; 

Надеется, что это поможет вам.

+0

Спасибо, проблема решена;) – Morozov

+0

welcome @Vadim , –