リストビューを上にスクロールするとImageViewが表示されるリストに問題があります。リストにデータを追加してListViewは、リストの最初のイメージではなく、現在のイメージを表示します。だから私は、データの変更とnotifyDatasetHasChanged()の呼び出しの後にsetSelectionメソッドを使用します。上記の呼び出しの後にListをもう一度スクロールすると、アダプタからgetView()メソッドの位置が間違っています。ここで Android ListViewAdapterは、データを追加してsetSelection()メソッドを呼び出すと間違った位置を返します。
はコードです:for (int i = tempPics.size() - 1; i >= 0; i--) {
DBChapterPicture pic = (DBChapterPicture) tempPics.get(i);
chapterPics.add(0, pic);
}
detailAdapter.notifyDataSetChanged();
detailListView.setSelection(chapterPics.size() - headState - 1);
そして、私のアダプタのgetViewメソッド()で実行し、この作品の後に私が誤った位置だ:私はなぜ知らない
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{}
を。私はそれがsetSelection()メソッドによって引き起こされると思います。
ありがとうございます。画像データがロードされていると私はセット高さがある前に、それはsolved.IはImageViewののサイズを設定されています
if (convertView == null) {
holder = new Holder();
convertView = inflater.inflate(R.layout.your_row_layout, null);
holder.img = (ImageView) convertView.findViewById(R.id.imgId);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
class Holder {
public ImageView img;
}
Q1:すべてのループの 'chapterPics.add'があなたの' pic'オブジェクトをインデックス0に追加するのはなぜですか? Q2: 'headState'の値は? –
A1:新しく追加された写真がリストの一番上に表示されます。 A2:headStateはオフセットの値です。 – AirTayork