什麼,我試圖做的是和失敗草草收場是這樣的:Android的正確的方式,如果在實施過濾自動完成
在我看來,我有一個自動完成的TextView。 我想通過GET獲取一個json數組對象。全程約1-2秒... (我應該使用的AsyncTask或處理程序來支持這種獲取?)
基於此數組然後過濾用戶的輸入。
目前,我已經實現了我的自定義適配器等等...
public class StationAdapter extends BaseAdapter implements Filterable {
Context _ctx;
//returned stations...
ArrayList<Station> _stations;
// to hold original stations...
private ArrayList<Station> orig;
//Custom filter to be used
private final StationFilter filter;
public StationAdapter(final Context ctx, final ArrayList<Station> stations) {
this._ctx = ctx;
this._stations = stations;
this.orig = stations;
this.filter = new StationFilter();
}
@Override
public int getCount() {
if (_stations != null)
return _stations.size();
else
return 0;
}
@Override
public Object getItem(final int position) {
return _stations.get(position);
}
//IS unused? NO whats its real purpose ?...
@Override
public long getItemId(final int position) {
return (position);
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
StationView sv;
if (convertView == null)
sv = new StationView(_ctx, _stations.get(position));
else {
sv = (StationView) convertView;
sv.setCode(_stations.get(position).mCode);
sv.setName(_stations.get(position).mName);
}
return sv;
}
@Override
public Filter getFilter() {
return filter;
}
private class StationFilter extends Filter {
@Override
protected FilterResults performFiltering(final CharSequence constraint) {
final FilterResults oReturn = new FilterResults();
final ArrayList<Station> results = new ArrayList<Station>();
if (orig == null)
orig = _stations;
if (constraint != null) {
if (orig != null && orig.size() > 0) {
for (final Station g : orig) {
if (g.mName.contains(constraint.toString().toUpperCase()))
results.add(g);
}
}
oReturn.values = results;
}
return oReturn;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(final CharSequence constraint, final FilterResults results) {
_stations = (ArrayList<Station>) results.values;
notifyDataSetChanged();
}
}
}
出於某種原因,過濾響應每觸發其它輸入鍵我main.xml中看起來簡直像這樣.. 。
<AutoCompleteTextView android:id="@+id/search_stations"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:singleLine="true"
/>
有人能指出我在做什麼錯誤的,一些教程,這樣的用例處理
在此先感謝