[英]Adding one element to recyclerview is adding entire arrayList again
[英]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.