我对listview的过滤器突然停止工作,我不知道为什么

时间:2015-12-08 14:00:40

标签: android android-listview android-filter

我创建了一个带有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;

 }
}

0 个答案:

没有答案