I have this error E / RecyclerView: No adapter attached; Skipping layout , but I do not know why. I have read different questions on the same subject, but nothing could help me
On the other hand the error does not show me in Android 5.0, when I compile the code in Android 4.4 this error appears.
This is the code I use, the recyclerview is full when it detects a change the edittext is filled:
EditText txCodeNumber;
public RecyclerView recyclerHarvest;
public RecyclerView.LayoutManager lManager;
public RegisterHarvestAdapter adapterRegister;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
rootView = inflater.inflate(R.layout.register_monitoring, container, false);
txCodeNumber = (EditText) rootView.findViewById(R.id.txcodenumber);
recyclerHarvest = (RecyclerView) rootView.findViewById(R.id.recyclerHarvest);
txCodeNumber.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String resultUnit = null;
Cursor cursoQuantity = new PrHarvestParameter(getActivity()).getConvert(txIdUnit.getText().toString(), txIdProduct.getText().toString(), txIdGrade.getText().toString());
for (cursoQuantity.moveToFirst(); !cursoQuantity.isAfterLast(); cursoQuantity.moveToNext()) {
int value = cursoQuantity.getColumnIndex("value");
String values = cursoQuantity.getString(value);
resultUnit = String.valueOf((1 * Integer.parseInt(values)));
}
arrayLand.add(idtxland.getText().toString());
arrayGrouper.add(txidGrouper.getText().toString());
arrayProduct.add(txIdProduct.getText().toString());
arrayVariety.add(txIdVariety.getText().toString());
arrayGrade.add(txIdGrade.getText().toString());
arrayDates.add(inputDate.getText().toString());
arrayUnits.add(txIdUnit.getText().toString());
arrayQuantityOrigin.add("1");
arrayQuantity.add(resultUnit);
arrayUser.add(shareIdUser);
arrayCode.add(txCodeNumber.getText().toString());
recyclerHarvest.setHasFixedSize(true);
lManager = new LinearLayoutManager(getActivity());
recyclerHarvest.setLayoutManager(lManager);
final List<ConstructRegisterHarvest> ListComplete = getCursorList(arrayCode, arrayQuantity);
adapterRegister = new RegisterHarvestAdapter(ListComplete, getActivity());
recyclerHarvest.setAdapter(adapterRegister);
recyclerHarvest.setItemAnimator(new DefaultItemAnimator());
txCodeNumber.setText("");
contador++;
txQuantity.setText("" + contador);
}
return false;
});
return rootView;
}
I hope you can help me. Thank you very much!
EDITED
This is the adapter:
public class RegisterHarvestAdapter extends RecyclerView.Adapter<RegisterHarvestAdapter.syncronizationViewHolder> {
private Context mainContext;
private List<ConstructRegisterHarvest> items;
ArrayList<Integer> dataResolve = new ArrayList<>();
public RegisterHarvestAdapter(List<ConstructRegisterHarvest> items, Context contexto) {
this.mainContext = contexto;
this.items = items;
}
static class syncronizationViewHolder extends RecyclerView.ViewHolder {
// Campos respectivos de un item
protected TextView Code;
protected TextView Quantity;
public syncronizationViewHolder(View v) {
super(v);
this.Code = (TextView) v.findViewById(R.id.txCode);
this.Quantity = (TextView) v.findViewById(R.id.txQuantity);
}
}
@Override
public syncronizationViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_register_harvest, parent, false);
return new syncronizationViewHolder(v);
}
@Override
public void onBindViewHolder(final RegisterHarvestAdapter.syncronizationViewHolder viewHolder, final int position) {
final ConstructRegisterHarvest item = items.get(position);
viewHolder.itemView.setTag(item);
viewHolder.Code.setText("" + item.getCode() );
viewHolder.Quantity.setText("" + item.getQuantity());
}
@Override
public int getItemCount() {
return items.size();
}
}