リストビューを扱うのは初めてなので、初心者のエラーについては事前に失礼します。
カスタム 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 はドロップボックス データストアに接続し、データストアのタイトルや画像などの情報を取得し (リストビューの各行はドロップボックス データストアです)、mHolder.PetName.setText(queriedresultstring) ecc を介してそれらを設定します。
このようにコードを保持すると、スクロール時にビューが繰り返されますが、updateItem 関数を if/else 条件の外に移動すると、すべて正常に動作しますが、リストビューをスクロールするたびに、画面に再表示される各行についてデータベースに再度クエリを実行します.
ビューが画面に戻るたびにデータベースにクエリを実行することなく、情報をビューに保存しておく方法はありますか?
ありがとうございました