Wednesday, October 27, 2021

Populate Recycler View with Api

1. Recycler View Adapter


public class ReceiptListAdapter extends RecyclerView.Adapter<ReceiptListAdapter.ReceiptListViewHolder> {

// List<UserModel> list = new ArrayList<UserModel>();
List<receipt> data;
iItemClickListnerRK iItemClickListnerRk;

public ReceiptListAdapter(List<receipt> data, iItemClickListnerRK iItemClickListnerRk) {
this.data = data;
this.iItemClickListnerRk = iItemClickListnerRk;
}

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

@Override
public void onBindViewHolder(ReceiptListViewHolder holder, int position) {
String title = data.get(position).toString();
holder.txtTitle.setText(title);

holder.itemView.setOnClickListener(view -> {
iItemClickListnerRk.onClickItemListnerRK(title, position);//this will get current index of item in recyclerView
});
}

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

public interface iItemClickListnerRK {
void onClickItemListnerRK(String itemNameRK, int idx);
}


public class ReceiptListViewHolder extends RecyclerView.ViewHolder {
ImageView imgIcon;
TextView txtTitle;

public ReceiptListViewHolder(View itemView) {
super(itemView);
imgIcon = itemView.findViewById(R.id.imgIcon);
txtTitle = itemView.findViewById(R.id.txtTitle);
}
}
}



2. Call Api


public class VolleyActions {

Context context;
ProgressBar progressBar;


public VolleyActions(Context context, ProgressBar progressBar) {
this.context = context;
this.progressBar = progressBar;
}


//get meter Json Object
public interface IVolleyGet {
void onError(String message);

void onResponse(JSONObject jsonObject);
}

public void volleyGet(String appedUrl, String filters, IVolleyGet iVolleyGet) {


Api_Urls api_urls = new Api_Urls();

String getUrl = api_urls.API_URL + appedUrl + filters;

RequestQueue requestQueue = Volley.newRequestQueue(context);

//api key authentication
session_rk sessionRk = new session_rk(context);
String apiKey = sessionRk.f_api_key();
//api key authentication


//Start progress bar
progressBar.setVisibility(View.VISIBLE);
//Execute post request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, getUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// System.out.println(response);
progressBar.setVisibility(View.INVISIBLE);

//JSONObject rdata;
try {
Integer st = Integer.parseInt(response.getString("Item1").toString());
if (st.equals(200)) {
//rdata = response.getJSONObject("m_Item3");
iVolleyGet.onResponse(response);
} else {
Toast.makeText(context, "" + response.getString("Item2"), Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
Toast.makeText(context, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "" + error.getMessage(), Toast.LENGTH_SHORT).show();
error.printStackTrace();
progressBar.setVisibility(View.INVISIBLE);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
params.put("Authorization", "basic " + apiKey);

return params;
}
};

requestQueue.add(jsonObjectRequest);

}
//get meter Json Object e


}



3. Populate Recycler View with Model List


public void f_show_list1() {

List<receipt> lng = new ArrayList<receipt>();
String filters = "?";
// if (!etd_from.getText().toString().isEmpty() && !etd_to.getText().toString().isEmpty()) {
// filters += "Date_From=" + etd_from.getText().toString() + "&";
// filters += "Date_To=" + etd_to.getText().toString() + "&";
// }
userAcc user = (userAcc) spnr_pcode.getSelectedItem();
if (!user.getLCode().isEmpty()) {
filters += "Pcode=" + user.getLCode() + "&";
}

VolleyActions a = new VolleyActions(this, progressBar);
a.volleyGet("receipt/data", filters, new VolleyActions.IVolleyGet() {
@Override
public void onError(String message) {
Toast.makeText(receipt_list.this, "Invalid transaction.", Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(JSONObject jsonObject) {
try {
JSONArray jsonArray = jsonObject.getJSONArray("Item3");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jObj = jsonArray.getJSONObject(i);
receipt obj = new receipt();
obj.setRec_No(jObj.getString("Rec_No"));
obj.setPName(jObj.getString("PName"));
obj.setRec_Date(jObj.getString("Rec_Date"));
obj.setAmt(Double.parseDouble(jObj.getString("Amt")));
lng.add(obj);
}

//recycler view
RecyclerView recyclerView1 = findViewById(R.id.rcyVw_receipt);
recyclerView1.setLayoutManager(new LinearLayoutManager(receipt_list.this));
ReceiptListAdapter recyclerAdapter1 = new ReceiptListAdapter(lng, new ReceiptListAdapter.iItemClickListnerRK() {
@Override
public void onClickItemListnerRK(String itemNameRK, int idx) {
Toast.makeText(receipt_list.this, "Clicked => P:" + idx + ", item:" + itemNameRK, Toast.LENGTH_SHORT).show();
}
});
recyclerView1.setAdapter(recyclerAdapter1);
//recycler view e


} catch (JSONException e) {
e.printStackTrace();
}
}
});

Toast.makeText(receipt_list.this, "Fetching...", Toast.LENGTH_SHORT).show();
}

 

No comments:

Post a Comment

Date format in android

public String f_dateFormat (String cdate , String dateToFormat) { // String cdate = "2013-05-15T10:00:00-0700"; ...