I am currently having a problem when inserting new Data in RecylerView using a response from API. The API response was requested by QR Scanner.
This is my adapter
public class checkoutAdapter extends RecyclerView.Adapter<checkoutAdapter.NewViewHolder>{
public ArrayList<DataCheckout> arrayList;
public checkoutAdapter(ArrayList<DataCheckout> arrayList) {
this.arrayList = arrayList;
}
@NonNull
@Override
public NewViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.checkout_layout, parent, false);
return new NewViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull NewViewHolder holder, int position) {
holder.code.setText(arrayList.get(position).getItem_code());
holder.item.setText(arrayList.get(position).getItem_name());
holder.price.setText(arrayList.get(position).getSelling_price());
holder.quantity.setText(arrayList.get(position).getRefquantity());
}
public void onRefreshAdapter(ArrayList<DataCheckout> yourList) {
arrayList = yourList;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class NewViewHolder extends RecyclerView.ViewHolder{
TextView code, item, price, quantity;
public NewViewHolder(@NonNull View itemView) {
super(itemView);
code = itemView.findViewById(R.id.txtCode);
item = itemView.findViewById(R.id.txtItem);
price = itemView.findViewById(R.id.txtPrice);
quantity = itemView.findViewById(R.id.txtQuantity);
}
}
}
This is my Activity
public class CheckoutActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private checkoutAdapter adapter;
DentalApi dentalApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checkout);
recyclerView = findViewById(R.id.rcCheckout);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
Button btScan = findViewById(R.id.btnScan);
btScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IntentIntegrator intentIntegrator = new IntentIntegrator(CheckoutActivity.this);
intentIntegrator.setPrompt("Scan a QR Code");
intentIntegrator.setOrientationLocked(true);
intentIntegrator.initiateScan();
intentIntegrator.setCameraId(0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TextView txtView = findViewById(R.id.txtInfo);
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
// if the intentResult is null then
// toast a message as "cancelled"
if (intentResult != null) {
if (intentResult.getContents() == null) {
Toast.makeText(getBaseContext(), "Cancelled", Toast.LENGTH_SHORT).show();
} else {
dentalApi = ApiClient.getRetrofit().create(DentalApi.class);
dentalApi.checkout("Bearer 13|nIl6vhT8z0Yt52vLKtCUnJTdXxE1fA3B97Bv7wvq", intentResult.getContents()).enqueue(new Callback<CheckoutResponse>() {
@Override
public void onResponse(Call<CheckoutResponse> call, Response<CheckoutResponse> response) {
CheckoutResponse chechoutResponse = null;
if (response.isSuccessful()){
chechoutResponse = response.body();
if (chechoutResponse.getStatus().equals(1));
List<DataCheckout> datalist = response.body().getData();
for (int i = 0; i < datalist.size(); i++) {
adapter = new checkoutAdapter((ArrayList<DataCheckout>) datalist);
recyclerView.setAdapter(adapter);
adapter.notifyItemInserted(datalist.size() - 1);
}
}
}
@Override
public void onFailure(Call<CheckoutResponse> call, Throwable t) {
}
});
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
This is the API response
