2015-05-23 2 views
0

Мое приложение имеет строки listview и listview, состоящие из imageView и Textview. У меня возникла проблема с загрузкой изображений и другими данными, когда я просматриваю список и просматриваю список.Позиция элементов в списке меняется при прокрутке списка?

В Listview есть несколько строк. Все данные моего элемента списка изменяются, когда я просматриваю listview. Поэтому он не отображает значения или строки, которые необходимо отображать.

Мой адаптер код Лик это ...

public class CartAdapter extends BaseAdapter { 

Context context; 
public ArrayList<CartList> arr_cart; 

private static LayoutInflater inflater = null; 

public CartAdapter(Context context, ArrayList<CartList> arr_cart) { 
    // TODO Auto-generated constructor stub 
    this.context = context; 
    this.arr_cart = arr_cart; 
    inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

private static class ViewHolder { 
    private static TextView tv_Title, tv_Price, tv_SellingPrice, 
      tv_ShippingCharge, tv_TotalPrice; 
    private static ImageView iv_Cancel, iv_ProductImage; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return arr_cart.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@SuppressWarnings("static-access") 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ViewHolder holder; 
    double dNationalShippingCost, dInternationalShippingCost, dSellingPrice, TotalCost; 
    String totalString = null, sShippingCost = null, sNationalShippingCost, sInternationalShippingCost, sSellingPrice; 

    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.cart_item, null); 

     holder.iv_ProductImage = (ImageView) convertView 
       .findViewById(R.id.iv_ProductImage); 
     holder.tv_Title = (TextView) convertView 
       .findViewById(R.id.tv_Title); 
     holder.tv_Price = (TextView) convertView 
       .findViewById(R.id.tv_Price); 
     holder.tv_SellingPrice = (TextView) convertView 
       .findViewById(R.id.tv_SellingPrice); 
     holder.tv_ShippingCharge = (TextView) convertView 
       .findViewById(R.id.tv_ShippingCharge); 
     holder.tv_TotalPrice = (TextView) convertView 
       .findViewById(R.id.tv_TotalPrice); 
     holder.iv_Cancel = (ImageView) convertView 
       .findViewById(R.id.iv_Cancel); 
     holder.iv_Cancel.setTag(position); 
     holder.iv_Cancel.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(context, "Delete button Clicked", 
         Toast.LENGTH_LONG).show(); 
       // Integer index = (Integer) convertView.getTag(); 
       arr_cart.remove(arr_cart.get(position)); 
       notifyDataSetChanged(); 
      } 
     }); 

     convertView.setTag(holder); 
    } else { 
     // the getTag returns the viewHolder object set as a tag to the view 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    String[] image = arr_cart.get(position).getImage().split(","); 
    String firstImage = image[0]; 
    Log.e("first Image", "" + firstImage); 
    if (firstImage.equals("")) { 

    } else { 
     Picasso.with(this.context).load(firstImage) 
       .into(holder.iv_ProductImage); 
    } 
    holder.tv_Title.setText(arr_cart.get(position).getAddTitle()); 
    holder.tv_Price.setText(arr_cart.get(position).getAddPrice()); 
    holder.tv_SellingPrice.setText(arr_cart.get(position) 
      .getAddSellingPrice()); 

    try { 
     // get cost in String 
     sSellingPrice = arr_cart.get(position).getAddSellingPrice(); 
     sNationalShippingCost = arr_cart.get(position) 
       .getAddNationalShippingCharge(); 
     sInternationalShippingCost = arr_cart.get(position) 
       .getAddWorldShippingCharge(); 

     // convert in to double 
     dSellingPrice = Double.parseDouble(sSellingPrice); 
     dNationalShippingCost = Double.parseDouble(sNationalShippingCost); 
     dInternationalShippingCost = Double 
       .parseDouble(sInternationalShippingCost); 

     // total Shipping Cost 
     // Log.e("national chage in double", "" + dNationalShippingCost); 
     // Log.e("international chage in double", "" 
     // + dInternationalShippingCost); 

     TotalCost = dInternationalShippingCost + dSellingPrice; 
     // Log.e("total in double", "" + TotalCost); 

     // convert in to string 
     sShippingCost = Double.toString(dInternationalShippingCost); 
     totalString = Double.toString(TotalCost); 

    } catch (NumberFormatException e) { 
    } 

    holder.tv_ShippingCharge.setText(sShippingCost); 
    // Log.e("Total shhiping chager str", totalString); 
    holder.tv_TotalPrice.setText(totalString); 

    return convertView; 
} 
+1

сообщение проверки ошибок. –

ответ

3

Удалите static спецификаторов из ViewHolder
Попробуйте заменить эту

private static class ViewHolder { 
    private static TextView tv_Title, tv_Price, tv_SellingPrice, 
      tv_ShippingCharge, tv_TotalPrice; 
    private static ImageView iv_Cancel, iv_ProductImage; 
} 

с

private static class ViewHolder { 
    private TextView tv_Title, tv_Price, tv_SellingPrice, 
      tv_ShippingCharge, tv_TotalPrice; 
    private ImageView iv_Cancel, iv_ProductImage; 
}