Commit bfaa7264b36ae68733981113e4f96303558ab305
1 parent
22599b8b76
Exists in
master
学校无法搜索问题解决
Showing
4 changed files
with
30 additions
and
16 deletions
Show diff stats
PersonalCenter/app/src/main/java/com/hjx/personalcenter/adapter/SchoolAdapter.java
1 | 1 | package com.hjx.personalcenter.adapter; |
2 | 2 | |
3 | 3 | import android.content.Context; |
4 | +import android.os.Handler; | |
5 | +import android.os.Message; | |
4 | 6 | import android.view.View; |
5 | 7 | import android.view.ViewGroup; |
6 | 8 | import android.widget.BaseAdapter; |
... | ... | @@ -9,25 +11,27 @@ import android.widget.Filterable; |
9 | 11 | import android.widget.TextView; |
10 | 12 | |
11 | 13 | import com.hjx.personalcenter.R; |
14 | +import com.hjx.personalcenter.http.HttpCode; | |
12 | 15 | import com.hjx.personalcenter.model.SchoolInfo; |
13 | 16 | |
14 | 17 | import java.util.ArrayList; |
15 | -import java.util.List; | |
16 | 18 | |
17 | 19 | /** |
18 | 20 | * Created by h on 2017/8/21. |
19 | 21 | */ |
20 | 22 | |
21 | 23 | public class SchoolAdapter extends BaseAdapter implements Filterable { |
22 | - private List<SchoolInfo.DataBean> mDatas; | |
23 | - ArrayList<SchoolInfo.DataBean> objects; | |
24 | + private ArrayList<SchoolInfo.DataBean> mDatas; | |
25 | + private ArrayList<SchoolInfo.DataBean> objects; | |
24 | 26 | private Context context; |
25 | 27 | private final Object mLock = new Object(); |
26 | 28 | private ArrayFilter mFilter; |
29 | + Handler handler = null; | |
27 | 30 | |
28 | - public SchoolAdapter(ArrayList<SchoolInfo.DataBean> objects, Context context) { | |
31 | + public SchoolAdapter(ArrayList<SchoolInfo.DataBean> objects, Context context,Handler handler) { | |
29 | 32 | this.objects = objects; |
30 | 33 | this.context = context; |
34 | + this.handler = handler; | |
31 | 35 | } |
32 | 36 | |
33 | 37 | @Override |
... | ... | @@ -37,7 +41,7 @@ public class SchoolAdapter extends BaseAdapter implements Filterable { |
37 | 41 | |
38 | 42 | @Override |
39 | 43 | public Object getItem(int position) { |
40 | - return position; | |
44 | + return objects.get(position); | |
41 | 45 | } |
42 | 46 | |
43 | 47 | @Override |
... | ... | @@ -82,16 +86,16 @@ public class SchoolAdapter extends BaseAdapter implements Filterable { |
82 | 86 | protected FilterResults performFiltering(CharSequence prefix) { |
83 | 87 | FilterResults results = new FilterResults();//过滤的结果 |
84 | 88 | //原始数据备份为空时,上锁,同步复制原始数据 |
85 | - if (objects == null) { | |
89 | + if (mDatas == null) { | |
86 | 90 | synchronized (mLock) { |
87 | - objects = new ArrayList<>(mDatas); | |
91 | + mDatas = new ArrayList<SchoolInfo.DataBean>(objects); | |
88 | 92 | } |
89 | 93 | } |
90 | 94 | //当首字母为空时 |
91 | 95 | if (prefix == null || prefix.length() == 0) { |
92 | - ArrayList<SchoolInfo.DataBean> list; | |
96 | + ArrayList<SchoolInfo.DataBean> list ; | |
93 | 97 | synchronized (mLock) {//同步复制一个原始备份数据 |
94 | - list = new ArrayList<>(objects); | |
98 | + list = new ArrayList<SchoolInfo.DataBean>(mDatas); | |
95 | 99 | } |
96 | 100 | results.values = list; |
97 | 101 | results.count = list.size();//此时返回的results就是原始的数据,不进行过滤 |
... | ... | @@ -100,10 +104,10 @@ public class SchoolAdapter extends BaseAdapter implements Filterable { |
100 | 104 | |
101 | 105 | ArrayList<SchoolInfo.DataBean> values; |
102 | 106 | synchronized (mLock) {//同步复制一个原始备份数据 |
103 | - values = new ArrayList<>(objects); | |
107 | + values = new ArrayList<SchoolInfo.DataBean>(mDatas); | |
104 | 108 | } |
105 | 109 | final int count = values.size(); |
106 | - final ArrayList<SchoolInfo.DataBean> newValues = new ArrayList<>(); | |
110 | + final ArrayList<SchoolInfo.DataBean> newValues = new ArrayList<SchoolInfo.DataBean>(count); | |
107 | 111 | |
108 | 112 | for (int i = 0; i < count; i++) { |
109 | 113 | final SchoolInfo.DataBean value = values.get(i);//从List<User>中拿到User对象 |
... | ... | @@ -135,7 +139,11 @@ public class SchoolAdapter extends BaseAdapter implements Filterable { |
135 | 139 | @Override |
136 | 140 | protected void publishResults(CharSequence prefix, FilterResults results) { |
137 | 141 | //noinspection unchecked |
138 | - mDatas = (List<SchoolInfo.DataBean>) results.values;//此时,Adapter数据源就是过滤后的Results | |
142 | + objects = (ArrayList<SchoolInfo.DataBean>) results.values;//此时,Adapter数据源就是过滤后的Results | |
143 | + Message message = Message.obtain(); | |
144 | + message.what = HttpCode.SCOOL; | |
145 | + message.obj = objects; | |
146 | + handler.sendMessage(message); | |
139 | 147 | if (results.count > 0) { |
140 | 148 | notifyDataSetChanged();//这个相当于从mDatas中删除了一些数据,只是数据的变化,故使用notifyDataSetChanged() |
141 | 149 | } else { | ... | ... |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/customdialog/SchoolListDialog.java
... | ... | @@ -74,6 +74,11 @@ public class SchoolListDialog extends BaseCircleDialog implements AdapterView.On |
74 | 74 | data.addAll( (List<SchoolInfo.DataBean>)msg.obj); |
75 | 75 | listadapter.notifyDataSetChanged(); |
76 | 76 | break; |
77 | + case HttpCode.SCOOL: | |
78 | + data.clear(); | |
79 | + data.addAll( (List<SchoolInfo.DataBean>)msg.obj); | |
80 | + listadapter.notifyDataSetChanged(); | |
81 | + break; | |
77 | 82 | } |
78 | 83 | } |
79 | 84 | }; |
... | ... | @@ -123,7 +128,7 @@ public class SchoolListDialog extends BaseCircleDialog implements AdapterView.On |
123 | 128 | country =SaveParam.getInstance().getLoginParam(getActivity(), SaveParam.ADRESSID); |
124 | 129 | |
125 | 130 | } |
126 | - listadapter = new SchoolAdapter(data, getActivity()); | |
131 | + listadapter = new SchoolAdapter(data, getActivity(),handler); | |
127 | 132 | school_list.setAdapter(listadapter); |
128 | 133 | school_list.setOnItemClickListener(this); |
129 | 134 | cance.setOnClickListener(new View.OnClickListener() { |
... | ... | @@ -155,11 +160,12 @@ public class SchoolListDialog extends BaseCircleDialog implements AdapterView.On |
155 | 160 | public void onTextChanged(CharSequence s, int start, int before, int count) { |
156 | 161 | // mAdapter.getFilter().filter(s); |
157 | 162 | |
158 | - listadapter.getFilter().filter(s); | |
163 | + listadapter.getFilter().filter(school_sech.getText().toString()); | |
159 | 164 | } |
160 | 165 | |
161 | 166 | @Override |
162 | 167 | public void afterTextChanged(Editable s) { |
168 | + //listadapter.notifyDataSetInvalidated(); | |
163 | 169 | |
164 | 170 | } |
165 | 171 | }); | ... | ... |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpCode.java
PersonalCenter/app/src/main/res/layout/activity_main.xml
... | ... | @@ -590,7 +590,6 @@ |
590 | 590 | <View |
591 | 591 | android:layout_width="5dp" |
592 | 592 | android:layout_height="20dp" |
593 | - android:layout_marginTop="10dp" | |
594 | 593 | android:background="@color/login_text_blue"> |
595 | 594 | |
596 | 595 | </View> |
... | ... | @@ -598,7 +597,6 @@ |
598 | 597 | <TextView |
599 | 598 | android:layout_width="wrap_content" |
600 | 599 | android:layout_height="wrap_content" |
601 | - android:layout_marginTop="10dp" | |
602 | 600 | android:layout_marginLeft="5dp" |
603 | 601 | android:text="版本信息" |
604 | 602 | android:textSize="22sp" /> | ... | ... |