の後に更新されないので、私はカスタムArrayAdapter
を持っていますので、ListView
で利用可能なタイトル/字幕ビューを使用できます。私はEditText
を受け取り、文字列を受け取り、アダプタをフィルタリングします。AndroidカスタムArrayAdapterはフィルタ
フィルタは、それが正しいオブジェクトをフィルタリングしているという意味で動作します(私はそれをクリックして伝えることができ、それが正しい「エキストラ」と意図を開始します。)
しかしフィルタリングが機能していても、アダプターの項目は、正しい情報を表示するように更新されません。タイトルとサブタイトルが正しくありません。
ListView
には0〜9の項目があり、検索では3つの項目に絞り込み、フィルタリングされた項目は5,6,9 ... 3つの項目が表示されますが、最初の3つ元の事前検索ListView
(0-2)の項目。アイテム2(3番目のアイテム)をクリックすると、9の内容が新しいインテントに含まれます。これは検索基準には正しいですが、タイトルには正しい情報が反映されています。
私はListView
にリフレッシュするために何が必要なのか分かりません。 私はそれとは思わないnotifyDataSetChanged();
何か助けていただければ幸いです。 ありがとう!
public class myListAdapter extends ArrayAdapter<Pizza>{
private ArrayList<Pizza> items;
private PizzaViewHolder myListHolder;
private class PizzaViewHolder{
TextView title;
TextView subtitle;
}
public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
super(context, textViewResourceId, items);
this.items = items;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.myList_item, null);
myListHolder = new PizzaViewHolder();
myListHolder.title = (TextView)v.findViewById(R.id.title);
myListHolder.subtitle = (TextView)v.findViewById(R.id.subtitle);
v.setTag(myListHolder);
}else myListHolder = (PizzaViewHolder)v.getTag();
Pizza myList = items.get(pos);
if (myList != null){
myListHolder.title.setText(myList.getTitle());
myListHolder.subtitle.setText(myList.getSubTitle());
}
return v;
}
}
これは私が判断したものから、検索
private TextWatcher filterTextWatcher = new TextWatcher(){
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.equals("")){
((Filterable) this.listView1.getAdapter()).getFilter().filter(s);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
};
標準のアダプタを使用すると、notifyDataSetChangedを使用する必要はありません。私のカスタムアダプタは、インターネット上で最も簡単で簡単な例のうちの1つをリフレッシュしません( –