Android 搜索清除ListView中的所有对象

Android 搜索清除ListView中的所有对象,android,listview,search,filter,parse-platform,Android,Listview,Search,Filter,Parse Platform,我的搜索过滤器有问题。当我开始输入时,所有对象都消失了,没有执行任何搜索。只有在刷新之后,它们才会回来。当我试图通过Toast进行证明时,if(wp.getAnimal().toLowerCase(Locale.getDefault()) .contains(text))在适配器中被调用,没有toast视图 你知道问题出在哪里吗?提前谢谢 带有EditText侦听器的My MainActivity类 public class MainActivity extends ActionBarActiv

我的搜索过滤器有问题。当我开始输入时,所有对象都消失了,没有执行任何搜索。只有在刷新之后,它们才会回来。当我试图通过Toast进行证明时,
if(wp.getAnimal().toLowerCase(Locale.getDefault())
.contains(text))
在适配器中被调用,没有toast视图

你知道问题出在哪里吗?提前谢谢

带有EditText侦听器的My MainActivity类

public class MainActivity extends ActionBarActivity{
private ListView mListView;
private AnimalAdapter mAdapter;
ProgressBar mProgressBar;
EditText mEditText;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Add your initialization code here
    Parse.initialize(this, "code", "code");
    ParseObject.registerSubclass(Animal.class);
    ParseAnalytics.trackAppOpened(getIntent());
    View header = getLayoutInflater().inflate(R.layout.header, null);
    header.setPadding(2, 8, 4, 2);



    mListView = (ListView) findViewById(R.id.animal_list);
    mListView.setVisibility(View.INVISIBLE);

    mListView.addHeaderView(header);


    mProgressBar = (ProgressBar) findViewById (R.id.loading_animals);
    mProgressBar.setVisibility(View.VISIBLE);





    RemoteDataTask task = new RemoteDataTask();
    task.execute();




}








 public void updateData(){


     ParseQuery<Animal> query = ParseQuery.getQuery(Animal.class);
  query.setCachePolicy(CachePolicy.CACHE_THEN_NETWORK);
query.orderByAscending("animal");
  query.findInBackground(new FindCallback<Animal>() {

      @Override
      public void done(List<Animal> animals, ParseException error) {

          if(animals != null){
              mAdapter.clear();
           mProgressBar.setVisibility(View.INVISIBLE);
          for (int i = 0; i < animals.size(); i++) {

                  mAdapter.add(animals.get(i));

              }


          }



      }
  });
}


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


     public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_refresh:
                Intent refreshIntent = new Intent(MainActivity.this, MainActivity.class);
                refreshIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                refreshIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                startActivity(refreshIntent);
                overridePendingTransition(0,0);
                     return true; 
             } 
        return super.onOptionsItemSelected(item);
     }



     private class RemoteDataTask extends AsyncTask<Void, Void, Void> {




         @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // Create a progressdialog





            }


         @Override
            protected Void doInBackground(Void... params) {

                updateData();


                return null;
            }


         @Override
            protected void onPostExecute(Void result) {

             mListView = (ListView) findViewById(R.id.animal_list);
                // Pass the results into ListViewAdapter.java
             mAdapter = new AnimalAdapter(MainActivity.this, new ArrayList<Animal>());


                mListView.setAdapter(mAdapter);
                mListView.setVisibility(View.VISIBLE);
                mListView.setTextFilterEnabled(true);

                mEditText = (EditText) findViewById(R.id.search_animal);
                  mEditText.addTextChangedListener(new TextWatcher(){

                    @Override
                    public void afterTextChanged(Editable s) {
                        mListView.setVisibility(View.VISIBLE);

                    }

                    @Override
                    public void beforeTextChanged(CharSequence s,
                            int start, int count, int after) {
                        mListView.setVisibility(View.VISIBLE);

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start,
                            int before, int count) {
                        mListView.setVisibility(View.VISIBLE);
                        String text = mEditText.getText().toString()
                                .toLowerCase(Locale.getDefault());
                        mAdapter.filter(text);


                    }
                });
                  }

         }

     }
公共类MainActivity扩展了ActionBarActivity{
私有列表视图;
私人动物适应学校;
ProgressBar-mProgressBar;
EditText-mEditText;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在此处添加初始化代码
初始化(这个“代码”、“代码”);
ParseObject.registerSubclass(Animal.class);
trackapponed(getIntent());
视图标题=GetLayoutFlater()。充气(R.layout.header,null);
标题。设置填充(2,8,4,2);
mListView=(ListView)findViewById(R.id.animal_列表);
mListView.setVisibility(View.INVISIBLE);
mListView.addHeaderView(标题);
mProgressBar=(ProgressBar)findViewById(R.id.加载动物);
mProgressBar.setVisibility(View.VISIBLE);
RemoteDataTask任务=新的RemoteDataTask();
task.execute();
}
公共void updateData(){
ParseQuery=ParseQuery.getQuery(Animal.class);
setCachePolicy(CachePolicy.CACHE\u然后\u网络);
查询:orderByAscending(“动物”);
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列出动物,ParseException错误){
如果(动物!=null){
mAdapter.clear();
mProgressBar.setVisibility(视图.不可见);
对于(int i=0;i
我的带有筛选器方法的适配器类

public class AnimalAdapter extends ArrayAdapter<Animal> implements Filterable{
private Context mContext;
private List<Animal> mAnimals;
ImageLoader imageLoader;
ArrayList<Animal> array;
DisplayImageOptions options;
Activity activity;
private Filter animalFilter;
private List<Animal> animaly;

@SuppressWarnings("deprecation")
public AnimalAdapter(Context context, List<Animal> objects) {
      super(context, R.layout.animal_row_item, objects);


      ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();

      imageLoader = ImageLoader.getInstance();
        imageLoader.init(config);
        options = new DisplayImageOptions.Builder()
        .cacheInMemory()
        .cacheOnDisc()
        .build();

        this.mContext = context;
        this.mAnimals = objects;
        this.animaly = objects;

  }

public View getView(int position, View convertView, ViewGroup parent){
      if(convertView == null){
          LayoutInflater mLayoutInflater = LayoutInflater.from(mContext);
          convertView = mLayoutInflater.inflate(R.layout.animal_row_item, null);
      }


      final Animal animal = mAnimals.get(position);


      TextView animalView = (TextView) convertView.findViewById(R.id.animal_text);
      TextView areaView = (TextView) convertView.findViewById(R.id.area_text);

      final ImageView animalPic = (ImageView)convertView.findViewById(R.id.animal_pic);
      final ProgressBar indicator = (ProgressBar)convertView.findViewById(R.id.progress);

      indicator.setVisibility(View.VISIBLE);
      animalPic.setVisibility(View.INVISIBLE);

        //Setup a listener we can use to switch from the loading indicator to the Image once it's ready
        ImageLoadingListener listener = new ImageLoadingListener(){



            @Override
            public void onLoadingStarted(String arg0, View arg1) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onLoadingCancelled(String arg0, View arg1) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
                indicator.setVisibility(View.INVISIBLE);
                animalPic.setVisibility(View.VISIBLE);
            }

            @Override
            public void onLoadingFailed(String arg0, View view, FailReason arg2) {


            }

        };

      imageLoader.displayImage(getItem(position).getImgUrl(), animalPic,options, listener);
      animalView.setText(animal.getAnimal());
      areaView.setText(animal.getArea());


      convertView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {

                Intent intent = new Intent(getContext(), MoreActivity.class);

                intent.putExtra("about", animal.getAbout());
                intent.putExtra("animal", animal.getAnimal());
                intent.putExtra("imgUrl", animal.getImgUrl());
                getContext().startActivity(intent);
            }
      });

      return convertView;
  }




 public int getCount() {}
     return mAnimals.size();




 public void filter(String text) {




        if (text.length() == 0) {
            mAnimals.addAll(animaly);
            Toast.makeText(getContext(), "text 0", Toast.LENGTH_SHORT).show();

        } else {
            mAnimals.clear();
            for (Animal wp : animaly) {
              if (wp.getAnimal().toLowerCase(Locale.getDefault())
                        .contains(text)) {
                    Toast.makeText(getContext(), "contains", Toast.LENGTH_SHORT).show();
                    mAnimals.add(wp);

            }



        }}
        notifyDataSetChanged();
    }
公共类AnimalAdapter扩展了ArrayAdapter实现了可过滤{
私有上下文;
私人名单管理;
图像加载器;
数组列表数组;
显示图像选项;
活动;
私人过滤动物过滤器;
私有列表动物;
@抑制警告(“弃用”)
公共AnimalAdapter(上下文、列表对象){
超级(上下文、右布局、动物行、对象);
ImageLoaderConfiguration config=新建ImageLoaderConfiguration.Builder(context.build();
imageLoader=imageLoader.getInstance();
init(config);
选项=新建DisplayImageOptions.Builder()
.cacheInMemory()
.cacheOnDisc()
.build();
this.mContext=上下文;
this.mAnimals=对象;
this.animaly=对象;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater mLayoutInflater=LayoutInflater.from(mContext);
convertView=MLAYOUTINGER.充气(R.LAYOUTING.ANMIAL\u row\u项目,空);
}
最终动物=获得(位置);
TextView animalView=(TextView)convertView.findViewById(R.id.animal\u text);
TextView区域视图=(TextView)convertView.findViewById(R.id.area\u text);
最终图像视图ani