Android 当我滚动listview时,listview中项目的位置正在更改?
我的应用程序有一个listview,listview的行由imageView和Textview组成。在上下查看listview时,我遇到了一个关于图像重新下载和其他数据的问题 Listview中有一些行。当我滚动listview时,列表项的所有数据都会更改。因此它不会显示需要显示的值或行 我的适配器代码是liek thisAndroid 当我滚动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
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;
}
与
检查错误消息。检查错误消息。检查错误消息。检查错误消息。