1

カスタムアダプターを実装し、画像のダウンロードのために非同期操作を実行しました。PullToRefresh - Nillsonも実装しました。

これは私が更新のために行うことです

int startRow = mainListView.getFirstVisiblePosition();
int endRow = mainListView.getLastVisiblePosition();
Log.e("IMAGEURL", "position: " + curPosition + " " + "startRow: " + startRow + " " +       imageInfo.imageUrl);
if (curPosition >= startRow && curPosition <= endRow & imageInfo.holderPosition == curPosition) {
View rowView = mainListView.getChildAt(curPosition - startRow);

奇妙なことに、rowView は、リストの行ビューではなく、PullToRefresh の上位相対レイアウトを返します。ビューに ant プログレスバーがなく、PullToRefresh のトップ レイアウトと完全に一致するため、デバッグ情報を次に示します。

[0] ProgressBar  (id=830008126840)  
[1] ImageView  (id=830008129008)    
[2] TextView  (id=830008130288) 
[3] TextView  (id=830008131616) 

これは、listVew にスクロールがない場合にのみ発生します (すべての行が表示され、非表示の行は表示されません)。行数を目に見える数を超えて増やすと、 mainListView.getChildAt(curPosition - startRow) でrowViewを取得しますが、位置0で mainListView.getFirstVisiblePosition() が実際にはゼロになるはずの1を返すため、正しいものではありません。

詳細:

PullToRefresh ライブラリは、インデックス 0 で行われるユーザーの listView 行の一番上に 1 つの行を追加します。

また、getCount() を変更し、(元の行 + 1 追加) を提供します。

編集:

PullToRefresh を削除しました。すべて正常に動作し、getFirstVisiblePosition() は正しい位置を示します。画像は右の行にマッピングされています。

しかし、リフレッシュするには引っ張る必要があります。まだ答えを探しています。

4

0 に答える 0