Display the add Data in RecyclerView using zxing qr scanner

Viewed 24

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

enter image description here

0 Answers
Related