我创建了一个带有listview和过滤器的Edittext,它运行顺畅,但突然间它停止了工作。我在Google和Stackoverflow上都搜索了一个解决方案,但代码应该是正确的。我从Arraylist中获取列表内容,然后我放入Customlistadapter,我将其放入Listview中。然后在onTextChanged中我使用edittext的输入过滤列表,但是当我在edittext中的某些内容时,列表变为空,当我什么都没有时,会出现这种情况,为什么会发生这种情况?
public class Sogeresultater extends AppCompatActivity implements Liste{
CustomListAdapter listAdapter;
EditText filterText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ArrayList<Annonce> søgeresultater = (ArrayList<Annonce>) getIntent().getExtras().getSerializable("søg");
filterText = (EditText)findViewById(R.id.password);
ListView itemList = (ListView)findViewById(R.id.listView);
listAdapter = new CustomListAdapter (this, søgeresultater);
itemList.setAdapter(listAdapter);
itemList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Intent intent = new Intent(Sogeresultater.this, AnnonceDisplay.class);
intent.putExtra("annonce", (Serializable) adapterView.getItemAtPosition(position));
startActivity(intent);
}
});
filterText.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) {
Sogeresultater.this.listAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.Forside) {
Intent intent = new Intent(this, Forside.class);
startActivity(intent);
}
else if (id == R.id.Logud){
Intent intent = new Intent(this, LogInd.class);
startActivity(intent);
}
return true;
}
}
Customlistadapter:
public class CustomListAdapter extends ArrayAdapter<Annonce>{
private final Activity context;
LayoutInflater inflater;
public CustomListAdapter(Activity context, ArrayList<Annonce> annoncer) {
super(context, R.layout.mylist, annoncer);
this.context=context;
}
public View getView(int position,View view,ViewGroup parent) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) view = inflater.inflate(R.layout.mylist, null);
TextView txtTitle = (TextView) view.findViewById(R.id.item);
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
TextView extratxt = (TextView) view.findViewById(R.id.textView1);
Annonce currentItem = getItem(position);
txtTitle.setText(currentItem.getItemname());
imageView.setImageResource(currentItem.getImgid());
extratxt.setText(currentItem.getDescription());
return view;
}
}