我在这个onCreateView
在一个片段。它包含一个由ListViewAdapterNahrung
提供的列表视图。我的问题是这个列表视图不会在adapter.notifyDataSetChanged();
之后更新。listview不会更新后adapter.notifyDataSetChanged()
public class NahrungFragment extends Fragment {
private ArrayList<HashMap<String, String>> list;
HashMap<String,String> temp;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_nahrung, container, false);
list=new ArrayList<HashMap<String,String>>();
temp=new HashMap<String, String>();
temp.put("Bezeichnung", "Bezeichnung");
list.add(temp);
final ListViewAdapterNahrung adapter=new ListViewAdapterNahrung(getActivity(), list);
listView.setAdapter(adapter);
etBez.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
list=new ArrayList<HashMap<String,String>>();
Cursor c=mydatabase.rawQuery("SELECT * FROM nahrung WHERE [bezeichnung] LIKE '%"+etBez.getText().toString()+"%' ", null);
if(c.getCount()>0)
{
while(c.moveToNext())
{
temp=new HashMap<String, String>();
temp.put("Bezeichnung", c.getString(0));
list.add(temp);
}
adapter.notifyDataSetChanged();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
return v;
}
}
这是ListViewAdapterNahrung
:
public class ListViewAdapterNahrung extends BaseAdapter {
public ArrayList<HashMap<String, String>> list;
Activity activity;
TextView tvBezeichnung;
private static final String FIRST_COLUMN="Bezeichnung";
public ListViewAdapterNahrung(Activity activity, ArrayList<HashMap<String, String>> list){
super();
this.activity=activity;
this.list=list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater=activity.getLayoutInflater();
if(convertView == null){
convertView=inflater.inflate(R.layout.listview_nahrung, null);
tvBezeichnung=(TextView) convertView.findViewById(R.id.tvName);
}
HashMap<String, String> map=list.get(position);
tvBezeichnung.setText(map.get("Bezeichnung"));
return convertView;
}
}