powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / прослушать изменение
6 сообщений из 6, страница 1 из 1
прослушать изменение
    #39868860
Zafar Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый,

Подскажите как я могу отследить изменения в

StudentListTemp.size();


То есть как я могу создать свое событие в Main Activity при изменениях в значении StudentListTemp.size();



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
public class ListAdapter extends ArrayAdapter<Student> {



    public ArrayList<Student> MainList;

    public ArrayList<Student> StudentListTemp;

    public ListAdapter.SubjectDataFilter studentDataFilter;

    public ListAdapter(Context context, int id, ArrayList<Student> studentArrayList) {

        super(context, id, studentArrayList);

        this.StudentListTemp = new ArrayList<Student>();

        this.StudentListTemp.addAll(studentArrayList);

        this.MainList = new ArrayList<Student>();

        this.MainList.addAll(studentArrayList);
    }

    @Override
    public Filter getFilter() {

        if (studentDataFilter == null) {

            studentDataFilter = new ListAdapter.SubjectDataFilter();
        }
        return studentDataFilter;
    }


    public class ViewHolder {

        TextView Name;
        TextView Number;
        TextView Qonun;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ListAdapter.ViewHolder holder = null;

        if (convertView == null) {

            LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = layoutInflater.inflate(R.layout.custom_layout, null);

            holder = new ListAdapter.ViewHolder();

            holder.Name = (TextView) convertView.findViewById(R.id.textviewName);

            holder.Number = (TextView) convertView.findViewById(R.id.textviewPhoneNumber);

            holder.Qonun = (TextView) convertView.findViewById(R.id.textviewQonun);

            convertView.setTag(holder);

        } else {

            holder = (ListAdapter.ViewHolder) convertView.getTag();
        }

        Student student = StudentListTemp.get(position);

        holder.Name.setText(student.getName());

        holder.Number.setText(student.getNumber());

        //holder.Qonun.setText(student.getQonun());

        return convertView;

    }

    private class SubjectDataFilter extends Filter {


        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {

            charSequence = charSequence.toString().toLowerCase();

            FilterResults filterResults = new FilterResults();

            if (charSequence != null && charSequence.toString().length() > 0) {

                ArrayList<Student> arrayList1 = new ArrayList<Student>();

                for (int i = 0, l = MainList.size(); i < l; i++) {
                    Student subject = MainList.get(i);

                    if (subject.toString().toLowerCase().contains(charSequence))

                        arrayList1.add(subject);
                }

                filterResults.count = arrayList1.size();

                filterResults.values = arrayList1;
            } else {
                synchronized (this) {
                    filterResults.values = MainList;

                    filterResults.count = MainList.size();
                }
            }
            return filterResults;
        }




        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {

            StudentListTemp = (ArrayList<Student>) filterResults.values;

            notifyDataSetChanged();

            clear();

            for (int i = 0, l = StudentListTemp.size(); i < l; i++)
                add(StudentListTemp.get(i));

            notifyDataSetInvalidated();



        }
    }
}

...
Рейтинг: 0 / 0
прослушать изменение
    #39868866
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zafar ZТо есть как я могу создать свое событие в Main Activity при изменениях в значении StudentListTemp.size();
Например через Looper javaway.info/mnogopotochnost-v-android-looper-handler-handlerthread-chast-1/

Но для начала стоит разобраться при каких обстоятельствах меняется размер. Возможно подойдет вариант и попроще. Но первый - более верный и в будущем пригодится.
...
Рейтинг: 0 / 0
прослушать изменение
    #39868867
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут можно использовать тэги синтаксиса языка для удобного чтения. Например, выше я сделал тэг java.
...
Рейтинг: 0 / 0
прослушать изменение
    #39868875
Zafar Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
При каждом обновлении в списке в ListView (через адаптер) меняется количество (size)
...
Рейтинг: 0 / 0
прослушать изменение
    #39868878
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zafar Z,

ListView в коде-же меняется? Посмотри методы адаптера notify*. Там и по изменению одной позиции есть, и по списку в целом.
...
Рейтинг: 0 / 0
прослушать изменение
    #39869015
Zafar Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,


Спасибо всем за участие и ответы,
в итоге использовал:

listAdapter.registerDataSetObserver(new DataSetObserver() {

@Override

public void onChanged() {

// мое событие



}

});

Все устраивает.(правда пришлось импортировать import android.database.DataSetObserver;)

Конечно были варианты использовать listAdapter.notifyDataSetChanged(); но не разобрался как правильно его использовать (((
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / прослушать изменение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]