0

私は使用していますpublic class SettingValueAdapter extends BaseAdapter

データセットとして配列private SettingsValue[] values;を持っています。

アクティビティが表示されたら、データを変更します (別名、動的に)

使ってるnotifyDataSetChangedけどUI変わらない

ArrayList使用して実際に要素を削除して再入力する必要があるという回答を見てきました。

しかし、配列があり、それを再割り当てするか、その中の要素を再割り当てすることしかできません。

これは一般的な共有コードであり、あまりにも苦痛になるため、ArrayList に変更することはできません。

これは本当に問題ですか?これが私の UI が動的に変化しない理由ですか?

私の活動で:

public void refreshListIcons() {

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                if (categories != null) {

                    SettingsValue[] values = adapter.getValues();
                    for (int i = 0; i < values.length; i++) {
                        values[i].icon = ResManager
                                .GetSkinDrawable(categories[i].iconName + ".bin");
                    }

                    adapter.setValues(values);

                    adapter.notifyDataSetChanged();

                    //mListView.invalidateViews();
                    //mListView.refreshDrawableState();

                }

            }
        });


}
4

1 に答える 1