Android 当我滚动listview时,listview中项目的位置正在更改?

Android 当我滚动listview时,listview中项目的位置正在更改?,android,android-layout,android-listview,Android,Android Layout,Android Listview,我的应用程序有一个listview,listview的行由imageView和Textview组成。在上下查看listview时,我遇到了一个关于图像重新下载和其他数据的问题 Listview中有一些行。当我滚动listview时,列表项的所有数据都会更改。因此它不会显示需要显示的值或行 我的适配器代码是liek this public class CartAdapter extends BaseAdapter { Context context; public ArrayList<Ca

我的应用程序有一个listview,listview的行由imageView和Textview组成。在上下查看listview时,我遇到了一个关于图像重新下载和其他数据的问题

Listview中有一些行。当我滚动listview时,列表项的所有数据都会更改。因此它不会显示需要显示的值或行

我的适配器代码是liek this

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;
}
公共类CartAdapter扩展了BaseAdapter{
语境;
公共ArrayList arr_cart;
专用静态充气机=空;
公共CartAdapter(上下文上下文,ArrayList arr_cart){
//TODO自动生成的构造函数存根
this.context=上下文;
this.arr\u cart=arr\u cart;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
}
私有静态类视图持有者{
私人静态文本查看电视标题、电视价格、电视销售价格、,
电视发货费,电视总价;
私有静态图像查看iv_取消,iv_产品图像;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回arr_cart.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@抑制警告(“静态访问”)
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视窗座;
双D国际运输成本、D国际运输成本、D销售价格、总成本;
String totalString=null,sShippingCost=null,sNationalShippingCost,sinternalshippingcost,sSellingPrice;
if(convertView==null){
holder=新的ViewHolder();
convertView=充气机。充气(R.layout.cart_项目,空);
holder.iv_ProductImage=(图像视图)convertView
.findviewbyd(R.id.iv_ProductImage);
holder.tv_Title=(TextView)convertView
.findviewbyd(R.id.tv_标题);
holder.tv_价格=(TextView)convertView
.findviewbyd(R.id.tv_价格);
holder.tv_SellingPrice=(TextView)convertView
.findViewById(R.id.tv_销售价格);
holder.tv_发货费用=(TextView)convertView
.findviewbyd(R.id.tv_运费);
holder.tv_TotalPrice=(TextView)convertView
.findViewById(R.id.tv_总价);
holder.iv_Cancel=(图像视图)convertView
.findViewById(R.id.iv_取消);
支架iv_取消设置标签(位置);
holder.iv_Cancel.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(上下文,“单击删除按钮”,
Toast.LENGTH_LONG).show();
//整数索引=(整数)convertView.getTag();
搬运车。移除(搬运车。获取(位置));
notifyDataSetChanged();
}
});
convertView.setTag(支架);
}否则{
//getTag将viewHolder对象集作为标记返回给视图
holder=(ViewHolder)convertView.getTag();
}
字符串[]image=arr_cart.get(position.getImage().split(“,”);
字符串firstImage=image[0];
Log.e(“第一个映像”,“第一个映像”+);
if(firstImage.equals(“”){
}否则{
毕加索.with(this.context).load(firstImage)
.插入(支架iv_ProductImage);
}
holder.tv_Title.setText(arr_cart.get(position.getAddTitle());
holder.tv_Price.setText(arr_cart.get(position.getAddPrice());
holder.tv\u SellingPrice.setText(arr\u cart.get(位置)
.getAddSellingPrice());
试一试{
//获取字符串中的成本
sSellingPrice=arr_cart.get(position.getAddSellingPrice();
sNationalShippingCost=arr_cart.get(位置)
.getAddNationalShippingCharge();
sInternationalShippingCost=arr_cart.get(位置)
.getAddWorldShippingCharge();
//换算成双精度
dSellingPrice=Double.parseDouble(sSellingPrice);
dNationalShippingCost=Double.parseDouble(sNationalShippingCost);
D国际运输成本=双倍
.2倍(国际运输成本);
//总运费
//Log.e(“双精度国家差价,”+D国家运输成本);
//Log.e(“国际双人马车”
//+国际运输成本);
总成本=国际运输成本+销售价格;
//Log.e(“双倍总计”,“总成本+总成本”);
//转换成字符串
sShippingCost=双倍的toString(dInternationalShippingCost);
totalString=Double.toString(TotalCost);
}捕获(数字格式){
}
持有人。tv_发货费用。setText(发货成本);
//Log.e(“总Shipping chager str”,总字符串);
holder.tv_TotalPrice.setText(totalString);
返回视图;
}

删除
视图支架的
静态
说明符

试着换掉这个

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 static TextView tv_Title, tv_Price, tv_SellingPrice,
            tv_ShippingCharge, tv_TotalPrice;
    private static ImageView iv_Cancel, iv_ProductImage;
}


删除
视图保持架的
静态
说明符

试着换掉这个

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 static TextView tv_Title, tv_Price, tv_SellingPrice,
            tv_ShippingCharge, tv_TotalPrice;
    private static ImageView iv_Cancel, iv_ProductImage;
}


检查错误消息。检查错误消息。检查错误消息。检查错误消息。