簡體   English   中英

我如何使用一個適配器來處理幾個片段?

[英]How i can use one adapter for few fragments?

有幾個片段。 在每個片段中,我都有帶有適配器的 recyclerView)。 在我創建第三個適配器時,我了解到它們的結構原則上是相似的(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;
}

}

檢查 object.getType() 它返回什么。 這個問題與此有關。 我確定它正在返回字符串。 這就是問題所在。

試試這個,因為從你的問題來看,你似乎得到了整數,但字符串是預期的

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;

只需更改您的靜態變量類型,例如:

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

希望它能幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM