Reputation: 259
AsyncTask:
class mydata extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setTitle("Fetching");
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.setIndeterminate(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
Response = JSONfunctions.getJSONfromURL(Constantt.PendingOrderCustomerWiseORDERURL + "18");
rowItems = new ArrayList<PendingOrderDataModel>();
try {
dataModel = new PendingOrderDataModel();
_jsonarray = new JSONArray(Response);
for (int i = 0; i < _jsonarray.length(); i++) {
_jsobject = _jsonarray.getJSONObject(i);
dataModel.setCreatedOn(_jsobject.getString("CreatedOn"));
dataModel.setDeliveryAddress(_jsobject.getString("DeliveryAddress"));
dataModel.setDeliveryTime(_jsobject.getString("DeliveryTime"));
dataModel.setId(_jsobject.getString("Id"));
dataModel.setStatus(_jsobject.getString("Status"));
dataModel.setTotal(_jsobject.getString("Total"));
dataModel.setUserDetailId(_jsobject.getString("UserDetailId"));
rowItems.add(dataModel);
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d("Response", Response);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
PendingOrderAdapter adapter = new PendingOrderAdapter(getActivity(),R.layout.pendingorderlist_item ,rowItems);
listView.setAdapter(adapter);
pDialog.dismiss();
}
}
Adapter Class:
public class PendingOrderAdapter extends ArrayAdapter<PendingOrderDataModel> {
Context context;
List<PendingOrderDataModel> rowItems;
public PendingOrderAdapter(Context context, int resourceId,List<PendingOrderDataModel> items)
{
super(context, resourceId, items);
this.context = context;
this.rowItems = items;
}
private class ViewHolder {
TextView orderridtext;
TextView orderdatetext;
TextView orderamounttext;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.pendingorderlist_item, null);
holder = new ViewHolder();
holder.orderridtext = (TextView) convertView.findViewById(R.id.order_item_order_id);
holder.orderdatetext = (TextView) convertView.findViewById(R.id.order_item_order_date);
holder.orderamounttext = (TextView) convertView.findViewById(R.id.order_item_total_amount);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
PendingOrderDataModel rowItem = (PendingOrderDataModel) getItem(position);
holder.orderridtext.setText("BHM" +rowItem.getId());
holder.orderdatetext.setText(rowItem.getDeliveryTime());
holder.orderamounttext.setText(rowItem.getTotal());
return convertView;
}
@Override
public int getCount() {
return rowItems.size();
}
@Override
public long getItemId(int position) {
return rowItems.indexOf(getItem(position));
}
}
When I run this AsyncTask, same item is displayed. While in background, when I debug, it sets different data, but in adapter class we are able to get the same data. Please tell me what I am doing wrong. Why is the same data printed in the list view?
Upvotes: 0
Views: 334
Reputation: 11545
Try to set data in getview
like this :
holder.orderridtext.setText("BHM" +this.rowItems.get(position).getId());
holder.orderdatetext.setText(this.rowItems.get(position).getDeliveryTime());
holder.orderamounttext.setText(this.rowItems.get(position).getTotal());
or change this :
PendingOrderDataModel rowItem = rowItems.get(position);
holder.orderridtext.setText("BHM" +rowItem.getId());
holder.orderdatetext.setText(rowItem.getDeliveryTime());
holder.orderamounttext.setText(rowItem.getTotal());
Upvotes: 0
Reputation: 2770
Modify your doInBackground()
inside try
block code from
dataModel = new PendingOrderDataModel();
_jsonarray = new JSONArray(Response);
for (int i = 0; i < _jsonarray.length(); i++) {
_jsobject = _jsonarray.getJSONObject(i);
dataModel.setCreatedOn(_jsobject.getString("CreatedOn"));
dataModel.setDeliveryAddress(_jsobject.getString("DeliveryAddress"));
dataModel.setDeliveryTime(_jsobject.getString("DeliveryTime"));
dataModel.setId(_jsobject.getString("Id"));
dataModel.setStatus(_jsobject.getString("Status"));
dataModel.setTotal(_jsobject.getString("Total"));
dataModel.setUserDetailId(_jsobject.getString("UserDetailId"));
rowItems.add(dataModel);
}
to
_jsonarray = new JSONArray(Response);
for (int i = 0; i < _jsonarray.length(); i++) {
dataModel = new PendingOrderDataModel();
_jsobject = _jsonarray.getJSONObject(i);
dataModel.setCreatedOn(_jsobject.getString("CreatedOn"));
dataModel.setDeliveryAddress(_jsobject.getString("DeliveryAddress"));
dataModel.setDeliveryTime(_jsobject.getString("DeliveryTime"));
dataModel.setId(_jsobject.getString("Id"));
dataModel.setStatus(_jsobject.getString("Status"));
dataModel.setTotal(_jsobject.getString("Total"));
dataModel.setUserDetailId(_jsobject.getString("UserDetailId"));
rowItems.add(dataModel);
}
Upvotes: 1