Android 使用基本适配器筛选列表

Android 使用基本适配器筛选列表,android,listview,filtering,baseadapter,Android,Listview,Filtering,Baseadapter,我有一个带有BaseAdapter的ListView,我想在归档的tipdoc之后做一个过滤器,我的代码不起作用,我的意思是,当开始在EditText中写入时,没有什么是heapen,我找不到原因,这是我的代码: listView = (ListView) findViewById(android.R.id.list); adapter = new ImageAndTextAdapter(Documente.this, R.layout.list_row,nume,tipdoc,form

我有一个带有BaseAdapter的ListView,我想在归档的tipdoc之后做一个过滤器,我的代码不起作用,我的意思是,当开始在EditText中写入时,没有什么是heapen,我找不到原因,这是我的代码:

listView = (ListView) findViewById(android.R.id.list);
    adapter = new ImageAndTextAdapter(Documente.this, R.layout.list_row,nume,tipdoc,formatdoc);
    listView.setAdapter(adapter);
    edt = (EditText) findViewById(R.id.search_box);

    edt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
             ArrayList<String> nume_sort = new ArrayList<String>();
             ArrayList<String> tipdoc_sort = new ArrayList<String>();
             ArrayList<String> formatdoc_sort = new ArrayList<String>();

            int textlength = edt.getText().length();
            nume_sort.clear();
            tipdoc_sort.clear();
            formatdoc_sort.clear();

            for (int i = 0; i < tipdoc.size(); i++)
            {
             if (textlength <= tipdoc.get(i).length())
             {
              if (edt.getText().toString().equalsIgnoreCase((String)      tipdoc.get(i).subSequence(0, textlength)))
              {
               tipdoc_sort.add(tipdoc.get(i));
              }
             }
            }

            listView.setAdapter(new ImageAndTextAdapter
             (Documente.this, R.layout.list_row,nume_sort,tipdoc_sort,formatdoc_sort));
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });
}


  private class ImageAndTextAdapter extends BaseAdapter{
 private Context adContext;
 public int getCount() {
     return nume.size();
 }               
 public ImageAndTextAdapter(Context context,int layout,ArrayList<String> nume,ArrayList<String> tipdoc,ArrayList<String> formatdoc)
  { 
     super();
        this.adContext = context;
  }

 public View getView(int pos, View inView, ViewGroup parent){
     View v = inView;
     if (v == null) {
         LayoutInflater inflater = (LayoutInflater)adContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         v = inflater.inflate(R.layout.list_row, null);
     } 

     String num = String.format(nume.get(pos));
     ((TextView)v.findViewById(R.id.Nume)).setText(num);    
     String tdoc = String.format(tipdoc.get(pos));
     ((TextView)v.findViewById(R.id.TDoc)).setText(tdoc);
     if (formatdoc.get(pos).equals("doc")){
     ((ImageView)v.findViewById(R.id.list_image)).setImageResource(R.drawable.doc);
     }
     else if (formatdoc.get(pos).equals(".xlsx") || formatdoc.get(pos).equals("xls")) ((ImageView)v.findViewById(R.id.list_image)).setImageResource(R.drawable.xls);
     else ((ImageView)v.findViewById(R.id.list_image)).setImageResource(R.drawable.pdf);


     return v;
 }
@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}
@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
} 
 }
listView=(listView)findViewById(android.R.id.list);
adapter=新的ImageAndTextAdapter(Documente.this,R.layout.list_行,nume,tipdoc,formatdoc);
setAdapter(适配器);
edt=(EditText)findViewById(R.id.search_框);
edt.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列cs、int arg1、int arg2、int arg3){
//当用户更改文本时
ArrayList nume_sort=新的ArrayList();
ArrayList tipdoc_sort=新的ArrayList();
ArrayList formatdoc_sort=新建ArrayList();
int textlength=edt.getText().length();
nume_sort.clear();
tipdoc_sort.clear();
formatdoc_sort.clear();
对于(int i=0;i
et.addTextChangedListener(new TextWatcher()
        {
            public void afterTextChanged(Editable s)
            {
                  // Abstract Method of TextWatcher Interface.
            }
            public void beforeTextChanged(CharSequence s,
                    int start, int count, int after)
            {
                // Abstract Method of TextWatcher Interface.
            }
            public void onTextChanged(CharSequence s,int start, int before, int count)
            {
                textlength = et.getText().length();
                array_sort.clear();
                for (int i = 0; i < listview_array_location.length; i++)
                {
                    if (textlength <= listview_array_location[i].length())
                    {
                        if(et.getText().toString().equalsIgnoreCase((String)listview_array_location[i].subSequence(0,textlength)))
                        {
                            array_sort.add(listview_array[i]);
                        }
                      }
                }
                AppendList(array_sort);
                }
                });
    }

    public void AppendList(ArrayList<String> str)
    {
        listview_arr = new String[str.size()];
        listview_arr = str.toArray(listview_arr);

        setListAdapter(new bsAdapter(this));
    }

    public class bsAdapter extends BaseAdapter
    {
        Activity cntx;
        public bsAdapter(Activity context)
        {
            // TODO Auto-generated constructor stub
            this.cntx=context;

        }

        public int getCount()
        {
            // TODO Auto-generated method stub
            return listview_arr.length;
        }

        public Object getItem(int position)
        {
            // TODO Auto-generated method stub
            return listview_arr[position];
        }

        public long getItemId(int position)
        {
            // TODO Auto-generated method stub
            return listview_array.length;
        }

        public View getView(final int position, View convertView, ViewGroup parent)
        {
            View row=null;

            LayoutInflater inflater=cntx.getLayoutInflater();
            row=inflater.inflate(R.layout.search_list_item, null);

            TextView tv=(TextView)row.findViewById(R.id.title);

            tv.setText(listview_arr[position]);



        return row;
        }
    }
et.addTextChangedListener(新的TextWatcher()
{
公共无效后文本已更改(可编辑)
{
//TextWatcher接口的抽象方法。
}
更改前的公共无效文本(字符序列,
整数开始、整数计数、整数结束)
{
//TextWatcher接口的抽象方法。
}
public void onTextChanged(字符序列、int start、int before、int count)
{
textlength=et.getText().length();
数组_sort.clear();
for(int i=0;i如果(textlength您必须更改nume变量的值,因为在您的代码中它是相同的

仍然不理解您为什么不使用ArrayAdapteralso,看起来您并不是在实际更改适配器中nume变量的内容。谢谢njzk2,我忘了它