这是我第一次使用列表视图,所以请提前原谅我的任何初学者错误。
我的自定义 getView 代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder mHolder;
if (convertView == null) {
/*Toast toast = Toast.makeText(context, "nullConvertView", Toast.LENGTH_SHORT);
toast.show();*/
mHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listitem, parent, false);
mHolder.PetName = (TextView) convertView.findViewById(R.id.PetName);
mHolder.PetImage = (RoundedImageView) convertView.findViewById(R.id.PetImage);
updateItem(mHolder, this.getItem(position));
convertView.setTag(mHolder);
} else {
mHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
函数 updateItem 连接到一个 dropbox 数据存储并检索数据存储标题和图像等信息(listview 中的每一行都是一个 dropbox 数据存储),然后通过 mHolder.PetName.setText(queriedresultstring) ecc 设置它们
如果我以这种方式保留代码,我在滚动时会得到重复的视图,而如果我将 updateItem 函数移到 if/else 条件之外,一切正常,但每次我滚动列表视图时,它都会再次查询数据库中重新出现在屏幕上的每一行.
有什么方法可以将信息保存在视图上,而不必每次视图返回屏幕时都查询数据库?
谢谢