@kakatak

Как правильно обработать событие клика по элементу который лежит в item ListView с последующем обновлением всего ListView из ListFragment?

Есть ListFragment в котором с помощью адаптера формируется сложный ListView с кнопками.
Необходимо на эти кнопки(элементы Item ListView ) повесить обработчик нажатий таким образом чтобы я мог пересобрать весь список исходя из измененного элемента в строке списка, и вывести его - уже измененный список в этот же ListFragment.
В просторах стека поголовно варианты привязывать обработчик нажатия в функции getView класса Adapter. Это все работает но как пересобрать список из адаптера не понятно, возможно для этого нужно иное решение. Может можно обрабатывать клики в самом классе фрагмента, тогда все вопросы отпадут.

То что есть сейчас:
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_form_schedule, null);
        String test = "0%4#09%00%18%00%13%00%14%00;5%5#09%00%17%00%13%00%14%00";
        adapter = new ScheduleAdapter(getActivity(), test.split(";"));
        ListView listView = (ListView)view.findViewById(android.R.id.list);
        View footerView = inflater.inflate(R.layout.item_change_schelude, null);
        listView.setAdapter(adapter);
....


public class ScheduleAdapter extends ArrayAdapter<String> {

    String scheduleCodedString;
    public ScheduleAdapter(Context context, String[] periodsScheduleCodedString) {
        super(context, 0, periodsScheduleCodedString);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_change_schelude, parent, false);
        }
        ToggleButton bt = (ToggleButton) convertView.findViewWithTag("weekDay0");
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //во время этого события мне нужно зареплейсить элементы списка на актуальные.
                Log.i("Test", v.getTag().toString());
            }
        });
.....
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Высчитывайте новые элементы списка, засовывайте их в адаптер и вызывайте notifyDataSetChanged(). И всё.
Кстати, почитайте про концепцию ViewHolder'ов, вам это нужно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы