1. ホーム
  2. android

[解決済み] ListViewの1行を更新するにはどうしたらいいですか?

2022-06-09 18:48:52

質問

私は ListView があり、ニュース項目が表示されます。それらは、画像、タイトル、およびいくつかのテキストを含んでいます。画像は別のスレッド (キューとすべて) で読み込まれ、画像がダウンロードされると、今度は notifyDataSetChanged() を呼び出して画像を更新しています。これは動作しますが getView() は頻繁に呼び出されることになります。 notifyDataSetChanged()getView() を呼び出す。私は、リスト内の単一のアイテムだけを更新したいのです。どのように私はこれを行うのでしょうか?

私の現在のアプローチで持っている問題は、次のとおりです。

  1. スクロールが遅い
  2. 画像にフェードインアニメーションがあり、リストの新しい画像が読み込まれるたびに発生します。

どのように解決するのですか?

ミシェルさんの情報のおかげで、答えが見つかりました。 あなたは確かに正しいビューを取得することができます View#getChildAt(int index) . しかし、それは最初の目に見えるアイテムからカウントを開始することです。実際には、表示されている項目しか取得することができません。これを解決するには ListView#getFirstVisiblePosition() .

例です。

private void updateView(int index){
    View v = yourListView.getChildAt(index - 
        yourListView.getFirstVisiblePosition());

    if(v == null)
       return;

    TextView someText = (TextView) v.findViewById(R.id.sometextview);
    someText.setText("Hi! I updated you manually!");
}