簡體   English   中英

將ArrayList添加到recyclerView

[英]Adding ArrayList to recyclerView

我正在嘗試將ArrayList添加到我的RecyclerView中。 問題在於它沒有設置任何內容,只有空白。

我的mainActivity的代碼是

ArrayList<String> Size = new ArrayList<>(Arrays.asList(SizeArrayFinal));

rec = (RecyclerView)findViewById(R.id.SizeRecycler);
rec.setHasFixedSize(true);
rec.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
sizeConstructorList = new ArrayList<>();

for (int i = 0; i <= Size.size(); i++){
   SizeConstructor sizeConstructor = new SizeConstructor(Size);
   sizeConstructorList.add(sizeConstructor);
}

recAdapter = new SizeAdapter(sizeConstructorList,getApplicationContext());
rec.setAdapter(recAdapter);

我的Adapter類的代碼是

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

    private List<SizeConstructor> sizeConstructorList;
    private Context context;

    public SizeAdapter(List<SizeConstructor> sizeConstructorList, Context context) {
        this.sizeConstructorList = sizeConstructorList;
        this.context = context;
    }

    @Override
    public SizeAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.size_view, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(SizeAdapter.ViewHolder holder, int position) {
        SizeConstructor sizeConstructor = sizeConstructorList.get(position);
        holder.button1.setText(sizeConstructor.getSize());
    }

    @Override
    public int getItemCount() {
        return sizeConstructorList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{

        public TextView button1;

        public ViewHolder(View itemView) {
            super(itemView);

            button1 = (TextView)itemView.findViewById(R.id.SizeButton);
        }
    }
}

最后我的構造器類是

public class SizeConstructor {

    String Size;

    public SizeConstructor(ArrayList<String> sizeArray) {
    }

    public SizeConstructor(String size) {
        Size = size;
    }

    public String getSize() {
        return Size;
    }
}

問題在於代碼未在recyclerView中設置值。

請參考下圖查看問題。 這是參考圖片

而且,由於我將方向設置為水平,因此不需要下面的巨大間隙。 任何幫助都將非常有用,因為我必須盡快提交此項目。

RecycleView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);

rec.setLayoutManager(layoutManager);

在我添加這一行之后...。它再次僅顯示第一個textView而不是完整的arrayList。

我想使布局水平。 我嘗試為XML文件的水平布局添加tge代碼,但沒有使其成為水平...。

您正在傳遞整個ArrayList而不是實際大小。 因此更改此行:

SizeConstructor sizeConstructor = new SizeConstructor(Size);

SizeConstructor sizeConstructor = new SizeConstructor(Size.get(indexValue));

所以終於到了:

 for (int i = 0; i <= Size.size(); i++){

     SizeConstructor sizeConstructor = new SizeConstructor(Size.get(i));
     sizeConstructorList.add(sizeConstructor);
 }

希望這可以幫助!

更改此代碼

 for (int i = 0; i <= Size.size(); i++){

            SizeConstructor sizeConstructor = new SizeConstructor(Size);
            sizeConstructorList.add(sizeConstructor);
        }

for (int i = 0; i <= Size.size(); i++){

            SizeConstructor sizeConstructor = new SizeConstructor(Size.get(i));
            sizeConstructorList.add(sizeConstructor);
        }

SizeConstructor構造SizeConstructor更改為此:

public SizeConstructor(ArrayList<String> sizeArray) {

  Size = String.valueOf(sizeArray != null ? sizeArray.size() : 0);
}

暫無
暫無

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

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