Android 当我在Listview项目中向下滚动时,项目保存值消失 公共类CustomList扩展了ArrayAdapter{ 私有字符串[]名称; 私有整数[]imageid; 私人活动语境; 充气机; 列出类别; 布尔值firstimagevisible=true; 布尔值secondimagevisible=false; 公共自定义列表(活动上下文、字符串[]名称、整数[]图像ID){ super(上下文、R.layout.list\u布局、名称); this.context=上下文; this.names=名称; this.imageid=imageid; 充气器=充气器。从(上下文); } 私有类视窗持有者{ 文本视图文本视图; 图像视图图像视图; 文本视图价格; 按钮图像; 下一页按钮; 纺纱机; } @凌驾 public int getViewTypeCount(){ 返回getCount(); } @凌驾 public int getItemViewType(int位置){ 返回位置; } @凌驾 public int getCount(){ 返回super.getCount(); } @凌驾 公共长getItemId(int位置){ 返回super.getItemId(位置); } @凌驾 公共字符串getItem(int位置){ 返回super.getItem(位置); } 公共视图getView(最终整数位置、视图视图、视图组父视图){ 最终持票人; 如果(视图==null){ holder=新的ViewHolder(); 视图=充气机。充气(R.layout.list\u布局,空); // holder.textView=(textView)view.findViewById(R.id.editText); holder.imageView=(imageView)view.findViewById(R.id.list\u avatar); holder.price=(TextView)view.findViewById(R.id.price); holder.previousimage=(按钮)view.findViewById(R.id.previousimage); holder.nextimage=(按钮)view.findViewById(R.id.nextimage); holder.sppiner=(微调器)view.findViewById(R.id.sppiner); 视图.设置标签(支架); }否则{ holder=(ViewHolder)view.getTag(); } holder.textView.setText(名称[位置]); holder.imageView.setImageResource(imageid[位置]); categories=newarraylist(); for(int i=1;i adapterView){ } }); 返回视图; } }
这是我的密码。我在Listview中显示了10个项目。每个都在imageview上具有文本和图像。我已经放置了下一个和上一个图像和图像更改,例如,如果我们设置第一个项目pic1和第二个项目,我点击下一步按钮,图像更改为pic2,现在我向下滚动到第十个项目,现在再次返回到第一个项目和第二个项目,它显示pic 1,下一个和上一个按钮也消失,而它应该保存第一个项目pic1和第二项pic2请告诉我哪里出错了问题是由于缓存造成的,因此我建议在将图像分配到ImageView对象之前使用以下代码Android 当我在Listview项目中向下滚动时,项目保存值消失 公共类CustomList扩展了ArrayAdapter{ 私有字符串[]名称; 私有整数[]imageid; 私人活动语境; 充气机; 列出类别; 布尔值firstimagevisible=true; 布尔值secondimagevisible=false; 公共自定义列表(活动上下文、字符串[]名称、整数[]图像ID){ super(上下文、R.layout.list\u布局、名称); this.context=上下文; this.names=名称; this.imageid=imageid; 充气器=充气器。从(上下文); } 私有类视窗持有者{ 文本视图文本视图; 图像视图图像视图; 文本视图价格; 按钮图像; 下一页按钮; 纺纱机; } @凌驾 public int getViewTypeCount(){ 返回getCount(); } @凌驾 public int getItemViewType(int位置){ 返回位置; } @凌驾 public int getCount(){ 返回super.getCount(); } @凌驾 公共长getItemId(int位置){ 返回super.getItemId(位置); } @凌驾 公共字符串getItem(int位置){ 返回super.getItem(位置); } 公共视图getView(最终整数位置、视图视图、视图组父视图){ 最终持票人; 如果(视图==null){ holder=新的ViewHolder(); 视图=充气机。充气(R.layout.list\u布局,空); // holder.textView=(textView)view.findViewById(R.id.editText); holder.imageView=(imageView)view.findViewById(R.id.list\u avatar); holder.price=(TextView)view.findViewById(R.id.price); holder.previousimage=(按钮)view.findViewById(R.id.previousimage); holder.nextimage=(按钮)view.findViewById(R.id.nextimage); holder.sppiner=(微调器)view.findViewById(R.id.sppiner); 视图.设置标签(支架); }否则{ holder=(ViewHolder)view.getTag(); } holder.textView.setText(名称[位置]); holder.imageView.setImageResource(imageid[位置]); categories=newarraylist(); for(int i=1;i adapterView){ } }); 返回视图; } },android,listview,Android,Listview,这是我的密码。我在Listview中显示了10个项目。每个都在imageview上具有文本和图像。我已经放置了下一个和上一个图像和图像更改,例如,如果我们设置第一个项目pic1和第二个项目,我点击下一步按钮,图像更改为pic2,现在我向下滚动到第十个项目,现在再次返回到第一个项目和第二个项目,它显示pic 1,下一个和上一个按钮也消失,而它应该保存第一个项目pic1和第二项pic2请告诉我哪里出错了问题是由于缓存造成的,因此我建议在将图像分配到ImageView对象之前使用以下代码 public
public class CustomList extends ArrayAdapter<String> {
private String[] names;
private Integer[] imageid;
private Activity context;
LayoutInflater inflater;
List<String> categories;
boolean firstimagevisible = true;
boolean secondimagevisible = false;
public CustomList(Activity context, String[] names, Integer[] imageid) {
super(context, R.layout.list_layout, names);
this.context = context;
this.names = names;
this.imageid = imageid;
inflater = LayoutInflater.from(context);
}
private class ViewHolder {
TextView textView;
ImageView imageView;
TextView price;
Button previousimage;
Button nextimage;
Spinner sppiner;
}
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getCount() {
return super.getCount();
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public String getItem(int position) {
return super.getItem(position);
}
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.list_layout, null);
//
holder.textView = (TextView) view.findViewById(R.id.editText);
holder.imageView = (ImageView) view.findViewById(R.id.list_avatar);
holder.price = (TextView) view.findViewById(R.id.price);
holder.previousimage = (Button) view.findViewById(R.id.previousimage);
holder.nextimage = (Button) view.findViewById(R.id.nextimage);
holder.sppiner = (Spinner) view.findViewById(R.id.sppiner);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.textView.setText(names[position]);
holder.imageView.setImageResource(imageid[position]);
categories = new ArrayList<String>();
for (int i = 1; i <= 20; i++) {
categories.add(String.valueOf(i));
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context,
android.R.layout.simple_spinner_item, categories);
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
holder.sppiner.setAdapter(dataAdapter);
holder.previousimage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.imageView.setImageResource(R.drawable.pro1);
holder.previousimage.setVisibility(View.GONE);
holder.nextimage.setVisibility(View.VISIBLE);
secondimagevisible = false;
firstimagevisible = true;
holder.price.setText(String.valueOf(1 * 22));
}
});
holder.nextimage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.imageView.setImageResource(R.drawable.pro2);
holder.nextimage.setVisibility(View.GONE);
holder.previousimage.setVisibility(View.VISIBLE);
secondimagevisible = true;
firstimagevisible = false;
holder.price.setText(String.valueOf(1 * 16));
}
});
holder.sppiner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String item = adapterView.getItemAtPosition(i).toString();
int Quantity = Integer.parseInt(item);
holder.previousimage.setVisibility(View.GONE);
if (firstimagevisible == false && secondimagevisible == true) {
holder.price.setText(String.valueOf(Quantity * 16));
} else {
holder.price.setText(String.valueOf(Quantity * 22));
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
return view;
}
}
但“上一步”和“下一步”按钮也会在“向下搜索”和“再次查看”时隐藏。我正在显示来自项目本身的本地图像,所以缓存问题不会有任何解决方案
holder.imageView.setDrawingCacheEnabled(false);
holder.imageView.destroyDrawingCache();
holder.imageView.setImageDrawable(null);
holder.imageView.setImageResource(imageid[position]);