Reputation: 1
I am facing a big problem in listview. The problem is that when I click on button I get all offer detail. And I am showing that detail in listview. Listview contain image also that load image from server. It load data properly, but the problem is that when I scroll my listview images will change as I scrolled list.
Here is my code
public class Offer_adapter extends BaseAdapter {
private Activity activity;
String[] offer_title;
String[] offerimg1;
String[] mrp;
String[] offerprice;
String[] you_save;
String[] imgURLArray;
Bitmap bitmap;
ImageView offerimg;
int a;
private static LayoutInflater inflater=null;
public Offer_adapter(Activity a, String[] offer_title, String[] offerimg1, String[] mrp, String[] you_save, String[] offerprice,String[] imgURLArray) {
activity = a;
this.offer_title = offer_title;
this.offerimg1 = offerimg1;
this.mrp = mrp;
this.offerprice = offerprice;
this.you_save = you_save;
this.imgURLArray = imgURLArray;
inflater = (LayoutInflater) activity.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return mrp.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
public TextView offertitle;
public TextView offermrp;
public TextView offersave;
public TextView ofrprice;
public ImageView offerimg;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
//imgURLArray[position] = "http://www.surun.co/preost/mod_offer/images/" + offerimg1[position];
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.offer_list, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.offertitle = (TextView) vi.findViewById(R.id.ofrtitle);
holder.offermrp = (TextView) vi.findViewById(R.id.offeroriginal);
offerimg = (ImageView) vi.findViewById(R.id.ofr_img);
holder.offersave = (TextView) vi.findViewById(R.id.saveoffer);
holder.ofrprice = (TextView) vi.findViewById(R.id.priceoffer);
/************ Set holder with LayoutInflater ************/
vi.setTag(holder);
holder.offertitle.setText(offer_title[position]);
holder.offermrp.setPaintFlags(holder.offermrp.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
holder.offermrp.setText("Original Price : \u20B9" + mrp[position]);
holder.offersave.setText("You Save : \u20B9"+you_save[position]);
holder.ofrprice.setText("Offer Price : \u20B9"+offerprice[position]);
// ImageView image = holder.offerimg;
//if (holder.offerimg != null) {
// new ImageDownloaderTask(image).execute(imgURLArray[position]);
// }
Glide.with(activity).load(imgURLArray[position]).placeholder(activity.getResources().getDrawable(R.drawable.loadingoffer)).error(activity.getResources().getDrawable(R.drawable.loadingoffer)).into(offerimg);
return vi;
}
And the data which I got from server I get it as
private class LoadImage extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.v(TAG, "In onPreExecute of the loading offers page.");
pDialog = new ProgressDialog(UserLogedIn.this);
pDialog.setMessage("Loading....");
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.mp3));
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(String... args) {
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("userid", u_id));
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh.makeServiceCall(URLOFFER, ServiceHandler.POST, param);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null)
{
try {
contacts1 = new JSONArray(jsonStr);
lengthofaffer = contacts1.length();
Log.v(TAG, ".................." + lengthofaffer);
if (lengthofaffer > 0) {
offer_title = new String[contacts1.length()];
imgURLArray=new String[contacts1.length()];
offer_expiry = new String[contacts1.length()];
available_city = new String[contacts1.length()];
mrp = new String[contacts1.length()];
offerprice = new String[contacts1.length()];
you_save = new String[contacts1.length()];
product_detail = new String[contacts1.length()];
key_feature = new String[contacts1.length()];
cod = new String[contacts1.length()];
emi = new String[contacts1.length()];
moneyback = new String[contacts1.length()];
delivery = new String[contacts1.length()];
terms = new String[contacts1.length()];
offerimg1 = new String[contacts1.length()];
offerimg2 = new String[contacts1.length()];
offerimg3 = new String[contacts1.length()];
offerimg4 = new String[contacts1.length()];
offerimg5 = new String[contacts1.length()];
date = new String[contacts1.length()];
for (int i = (lengthofaffer - 1), j = 0; i >= 0 && j < contacts1.length(); i--, j++)
{// for (int i = 0; i < contacts1.length(); i++) {
JSONObject c = contacts1.getJSONObject(i);
Log.v(TAG, "" + i);
String offer_title1 = c.getString(TAG_offer_title);
String offer_expiry1 = c.getString(TAG_offer_expiry);
String available_city1 = c.getString(TAG_available_city);
String mrp1 = c.getString(TAG_mrp);
String offerprice1 = c.getString(TAG_offerprice);
String you_save1 = c.getString(TAG_you_save);
String product_detail1 = c.getString(TAG_product_detail);
String key_feature1 = c.getString(TAG_key_feature);
String cod1 = c.getString(TAG_cod);
String emi1 = c.getString(TAG_emi);
String moneyback1 = c.getString(TAG_moneyback);
String delivery1 = c.getString(TAG_delivery);
String terms1 = c.getString(TAG_terms);
String offerimg11 = c.getString(TAG_offerimg1);
String offerimg21 = c.getString(TAG_offerimg2);
String offerimg31 = c.getString(TAG_offerimg3);
String offerimg41 = c.getString(TAG_offerimg4);
String offerimg51 = c.getString(TAG_offerimg5);
String date1 = c.getString(TAG_date);
offer_title[i] = offer_title1;
offer_expiry[i] = offer_expiry1;
available_city[i] = available_city1;
mrp[i] = mrp1;
offerprice[i] = offerprice1;
you_save[i] = you_save1;
product_detail[i] = product_detail1;
key_feature[i] = key_feature1;
cod[i] = cod1;
emi[i] = emi1;
moneyback[i] = moneyback1;
delivery[i] = delivery1;
terms[i] = terms1;
offerimg1[i] = offerimg11;
offerimg2[i] = offerimg21;
offerimg3[i] = offerimg31;
offerimg4[i] = offerimg41;
offerimg5[i] = offerimg51;
date[i] = date1;
imgURLArray[i] = "http://www.surun.co/preost/mod_offer/images/" + offerimg1[i];
Log.v(TAG,""+imgURLArray[i]);
}
}
} catch (JSONException e) {
System.out.print("hiiiiiiiiiiii");
e.printStackTrace();
}
}
return null;
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.v(TAG, "length of aaaaa" + lengthofaffer);
if ( offer_title!= null && offer_title.length > 0) {
Log.v(TAG,"abhijit");
Offer_adapter adapter = new Offer_adapter(UserLogedIn.this, offer_title,offerimg1,mrp,you_save,offerprice,imgURLArray);
offerlist.setAdapter(adapter);
//offerlist.getSelectedView().setBackgroundColor();
offerlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent ii = new Intent(UserLogedIn.this, Single_offer.class);
ii.putExtra("offer_title", offer_title[i]);
ii.putExtra("offer_expiry", offer_expiry[i]);
ii.putExtra("available_city", available_city[i]);
ii.putExtra("mrp", mrp[i]);
ii.putExtra("cod", cod[i]);
ii.putExtra("emi", emi[i]);
ii.putExtra("offer_price", offerprice[i]);
ii.putExtra("you_save", you_save[i]);
ii.putExtra("product_detail", product_detail[i]);
ii.putExtra("key_feature", key_feature[i]);
ii.putExtra("moneyback", moneyback[i]);
ii.putExtra("delivery", delivery[i]);
ii.putExtra("terms", terms[i]);
ii.putExtra("date", date[i]);
ii.putExtra("offerimg1", offerimg1[i]);
ii.putExtra("offerimg2", offerimg2[i]);
ii.putExtra("offerimg3", offerimg3[i]);
ii.putExtra("offerimg4", offerimg4[i]);
ii.putExtra("offerimg5", offerimg5[i]);
ii.putExtra("userid",u_id);
startActivity(ii);
}
});
}
else
{
AlertDialog.Builder builder = new AlertDialog.Builder(UserLogedIn.this);
builder.setTitle("Alert");
// builder.setIcon(R.drawable.unverified).show();
builder.setMessage("No Offer Present");
builder.setPositiveButton("Ok", null);
final AlertDialog alert = builder.create();
UserLogedIn.this.runOnUiThread(new java.lang.Runnable() {
public void run() {
//show AlertDialog
alert.show();
}
});
}
pDialog.dismiss();
pDialog.hide();
}//End of Inner class Load image
}
Upvotes: 0
Views: 47
Reputation: 6334
Basically your adapter is not configured probably. Try this below:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if (vi == null) {
vi = LayoutInflater.from(parent.getContext()).inflate(R.layout.offer_list, parent,false);
holder = new ViewHolder();
holder.offertitle = (TextView) vi.findViewById(R.id.ofrtitle);
holder.offermrp = (TextView) vi.findViewById(R.id.offeroriginal);
holder.offerimg = (ImageView) vi.findViewById(R.id.ofr_img);
holder.offersave = (TextView) vi.findViewById(R.id.saveoffer);
holder.ofrprice = (TextView) vi.findViewById(R.id.priceoffer);
vi.setTag(holder);
} else {
holder = (ViewHolder)vi.getTag();
}
holder.offertitle.setText(offer_title[position]);
holder.offermrp.setPaintFlags(holder.offermrp.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
holder.offermrp.setText("Original Price : \u20B9" + mrp[position]);
holder.offersave.setText("You Save : \u20B9" + you_save[position]);
holder.ofrprice.setText("Offer Price : \u20B9" + offerprice[position]);
Glide.with(activity).load(imgURLArray[position]).placeholder(activity.getResources().getDrawable(R.drawable.loadingoffer)).error(activity
.getResources().getDrawable(R.drawable.loadingoffer)).into(holder.offerimg);
return vi;
}
For more info, please refer to http://developer.android.com/guide/topics/ui/layout/listview.html
Upvotes: 1