Android 我的listview过滤器突然停止工作,我不';我不知道为什么
我制作了一个带有listview和过滤器的Edittext,它工作得很顺利,但突然停止了工作。我已经在Google和Stackoverflow上搜索了一个解决方案,但是代码应该是正确的。我从Arraylist获取列表内容,然后将其放入Customlistadapter,并将其放入Listview。然后在ContextChanged中,我使用来自edittext的输入过滤列表,但是当我在edittext中输入了某个内容时,列表变为空,当我没有任何内容时,为什么会发生这种情况Android 我的listview过滤器突然停止工作,我不';我不知道为什么,android,android-listview,android-filter,Android,Android Listview,Android Filter,我制作了一个带有listview和过滤器的Edittext,它工作得很顺利,但突然停止了工作。我已经在Google和Stackoverflow上搜索了一个解决方案,但是代码应该是正确的。我从Arraylist获取列表内容,然后将其放入Customlistadapter,并将其放入Listview。然后在ContextChanged中,我使用来自edittext的输入过滤列表,但是当我在edittext中输入了某个内容时,列表变为空,当我没有任何内容时,为什么会发生这种情况 public clas
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;
}
}
公共类SogereSultter扩展AppCompative实现Liste{
自定义列表适配器列表适配器;
编辑文本过滤器文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_列表);
ArrayList søgeresultater=(ArrayList)getIntent().getExtras().getSerializable(“søg”);
filterText=(EditText)findViewById(R.id.password);
ListView itemList=(ListView)findViewById(R.id.ListView);
listAdapter=新的CustomListAdapter(这个,søgeresultater);
setAdapter(listAdapter);
itemList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
Intent Intent=新Intent(sogeresultter.this,AnnonceDisplay.class);
intent.putExtra(“annonce”,(可序列化)adapterView.getItemAtPosition(position));
星触觉(意向);
}
});
filterText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
Sogeresultater.this.listAdapter.getFilter().filter;
}
@凌驾
公共无效后文本已更改(可编辑){
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.Forside){
Intent Intent=新的Intent(这个,Forside.class);
星触觉(意向);
}
else if(id==R.id.Logud){
Intent Intent=新Intent(这个,LogInd.class);
星触觉(意向);
}
返回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;
}
}
公共类CustomListAdapter扩展了ArrayAdapter{
私人最终活动背景;
充气机;
公共CustomListAdapter(活动上下文,ArrayList annoncer){
super(context,R.layout.mylist,annoncer);
this.context=context;
}
公共视图getView(内部位置、视图视图、视图组父视图){
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
如果(view==null)view=inflater.inflate(R.layout.mylist,null);
TextView txtTitle=(TextView)view.findViewById(R.id.item);
ImageView=(ImageView)view.findViewById(R.id.icon);
TextView extratxt=(TextView)view.findViewById(R.id.textView1);
Annonce currentItem=getItem(位置);
setText(currentItem.getItemname());
setImageResource(currentItem.getImgid());
setText(currentItem.getDescription());
返回视图;
}
}
您的CustomListAdapter做什么?你能提供一些代码吗?你的适配器应该有一个对getFilter()
的覆盖,但我看不到。我该如何实现它?这很奇怪,因为以前是这样工作的