Код: Выделить всё
public class X {
...
public ArrayList<Map<String, Object>> data;
...
}
Код: Выделить всё
public class FragmentList extends Fragment {
...
ListView lvX;
SimpleAdapter sAdapter;
X x;
String from = new String[] { кучка строк };
int to = new int[] { R.id.xxx, .... };
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
...
View rootView = inflater.inflate(R.layout.frame_list, container, false);
lvX = (ListView)rootView.findViewById(R.id.listView1);
x = new X();
sAdapter = new SimpleAdapater(getActivity(), x.data, R.layout.listitemg, from, to);
lvX.setAdapter(sAdapter);
...
Код: Выделить всё
sAdapter.notifyDataSetChanged();
Но меня гложат сомнения. Ведь неправильно это в корне, когда данные класса public!
Можно ведь наверное организовать это как-то по-другому.
Я придумал только варианты,
1) когда в классе data будет private, сделать какой-нибудь метод, который будет возвращать копию, во фрагменте получать копию и её уже привязать к адаптеру. Ну и регулярно при обновлении data в классе обновлять и данные в копии. Но получится две копии данных одного и того же + доп. код для поддержки актуальности копии.
2) Пробовал сделать метод, возвращающий те же данные и привязать адаптер так:
Код: Выделить всё
sAdapter = new SimpleAdapater(getActivity(), x.getData(), R.layout.listitemg, from, to);
Вобщем вопрос - как правильно организовать хранение данных в классе с модификатором private и в то же время, чтобы список нормально работал?