[英]Android ListView Show Wrong Position
I have a problem with ListView
. 我对
ListView
有问题。 Here the code of adapter : 这是适配器的代码:
public class AdapterListViewEncyclopedia extends ArrayAdapter<Apple> {
private int layoutResourceId;
private Context context;
private List<Apple> data;
private CellHolder holder;
public AdapterListViewEncyclopedia(Context context, int layoutResourceId, List<Apple> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
static class CellHolder
{
ImageView imageApple;
TextView tvCellAppleName;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CellHolder();
holder.imageApple = (ImageView) row.findViewById(R.id.imageApple);
holder.tvCellAppleName = (TextView)row.findViewById(R.id.tvAppleName);
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(InterfaceConfig.serverURL+data.get(position).getImageURL(), holder.imageApple);
holder.tvCellAppleName.setText(data.get(position).getName());
System.out.println(position);
row.setTag(holder);
}
else
{
holder = (CellHolder)row.getTag();
}
return row;
}
}
The Main Problem : 主要问题:
1.I have 10 data in ArrayAdapter<Apple>
and When i open page with ListView
and i print position code with System.out.println
, the code show 0,1,2,3,4,5,0 2. When i scroll the ListView
, Top and Bottom which hidden is random position. 1.我在
ArrayAdapter<Apple>
有10个数据,当我使用ListView
打开页面并使用System.out.println
打印位置代码时,代码显示为0,1,2,3,4,5,0 2.当我滚动ListView
,Top和Bottom,其中隐藏的是随机位置。
Anyone can help me to solve my problem? 任何人都可以帮助我解决我的问题吗?
I have update the code pls try this. 我已经更新了代码,请尝试一下。 You have to set the data after the if-else block other wise you cannot get the correct position in the listview while binding the data.
您必须在if-else块之后设置数据,否则在绑定数据时无法在列表视图中获得正确的位置。 Please refer the android view holder properties ViewHolder
请参考android viewholder属性ViewHolder
public class AdapterListViewEncyclopedia extends ArrayAdapter<Apple> {
private int layoutResourceId;
private Context context;
private List<Apple> data;
private CellHolder holder;
public AdapterListViewEncyclopedia(Context context, int layoutResourceId, List<Apple> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
static class CellHolder
{
ImageView imageApple;
TextView tvCellAppleName;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CellHolder();
holder.imageApple = (ImageView) row.findViewById(R.id.imageApple);
holder.tvCellAppleName = (TextView)row.findViewById(R.id.tvAppleName);
row.setTag(holder);
}
else
{
holder = (CellHolder)row.getTag();
}
// you can set the data here
setData(position,holder);
return row;
}
private void setData(int position, CellHolder holder)
{
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(InterfaceConfig.serverURL+data.get(position).getImageURL(), holder.imageApple);
holder.tvCellAppleName.setText(data.get(position).getName());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.