リストビューに、レイアウトを動的に変更する必要がある行があります。私のアレイアダプターには、次の(簡略化された)コードがあります
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.default);
}
...
if(condition) {
View view = inflater.inflate(R.layout.new);
...
return view; // doesn't work
}
return convertView;
}
私の実際のリストビューはかなり複雑getViewType
で、2 つの異なるレイアウトにも を使用しています。しかし、上記のコードは、レイアウトを動的に切り替えたい場合に新しいレイアウトが正しく表示されないことを強調するのに十分なはずです。
私の質問は、どうすれば convertView をリフレッシュしたり、convertViews がクリアされるポイントまでアダプター/リストビューのリロードをトリガーしたりできるでしょうか? を呼び出しnotifyDataSetChanged
たり、リストビューを呼び出したりしましinvalidateViews()
たが、すべてうまくいきませんでした。私の最後の手段はアクティビティ全体を再開するようですが、これはエレガントな解決策ではないと思います。