Android 为什么要列出<;对象>;是空的吗?(安卓)

Android 为什么要列出<;对象>;是空的吗?(安卓),android,android-listview,android-search,Android,Android Listview,Android Search,我试图在SQLLite数据库中使用SearchView进行筛选,然后在ListView中显示。我用2列表来帮助我做到这一点。首先,我使用bd.buscar()从SQLLite检索数据并将其传递到我的列表listp。然后我将从listp检索到的值分配给ListListaux。ListView显示数据库中的所有数据。然后我使用SearchView方法onQueryTextChange进行筛选,ListView变为空。 我使用日志跟踪listp的大小,但是当filterProduto方法启动时,lis

我试图在SQLLite数据库中使用SearchView进行筛选,然后在ListView中显示。我用2列表来帮助我做到这一点。首先,我使用bd.buscar()从SQLLite检索数据并将其传递到我的列表listp。然后我将从listp检索到的值分配给ListListaux。ListView显示数据库中的所有数据。然后我使用SearchView方法onQueryTextChange进行筛选,ListView变为空。 我使用日志跟踪listp的大小,但是当filterProduto方法启动时,listp变为空

public class ActivityListaProduto extends Activity {
//ListActivity
protected static final String MsnLog = "log-MeuSQLite";
private ListView my_List;
private ActivityListaProdutoAdapter Adapter;
private SearchView searchView;
private Crud crud;
private Button deletarBt;
List<Produto> listp;
List<Produto> Listaux;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    Log.i(MsnLog, " ");
    Log.i(MsnLog, "==========  ActivityListaProduto --- onCreate  ============= ");

    setContentView(R.layout.activity_lista_produto);

    //relate the listView from java to the one created in xml
    my_List = (ListView) findViewById(R.id.mylist);

    //prepare the SearchView
    searchView = new SearchView(this);
    searchView = (SearchView) findViewById(R.id.search);

    caregardb();

    Adapter = new ActivityListaProdutoAdapter(this, Listaux);
    my_List.setAdapter(Adapter);


    // Search
    searchView.setOnQueryTextListener(new Searchable());



    deletarBt = (Button) findViewById(R.id.btnBusca);
    deletarBt.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i(MsnLog, " ");
            Log.i(MsnLog, "----------  ActivityListaProduto --- onClick ----------");

            // Search
            Searchable b;
            searchView.setOnQueryTextListener(new Searchable());

            Adapter.notifyDataSetChanged();
            /*
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView;
            searchView = (SearchView) findViewById(R.id.search);
            Log.i(MsnLog, "searchView =" + searchView);

            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            Log.i(MsnLog, "searchView =" + searchView.getClass().toString());
            searchView.setQueryHint(getResources().getString(R.string.search_hint));
            Log.i(MsnLog, " ---- > vai para a tela SearchableActivity ");

            //ActivityListaProdutoAdapter.this.notifyDataSetChanged();

            //Adapter.notifyDataSetChanged();
            //Log.i(MsnLog, " ---- > Adapter.notifyDataSetChanged()");
            */
        }
     });

}

public void caregardb(){
    Crud bd = new Crud(this);
    listp = bd.buscar();

    Log.i(MsnLog, "onCreate -- listp.size()= "+ listp.size());

    Listaux = listp;
    Log.i(MsnLog, "onCreate -- Listaux.size() 2= "+ Listaux.size());
    Log.i(MsnLog, "onCreate -- listp.size()= "+ listp.size());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_activity_lista_produto, menu);
    // test
    /*
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
    */
    // Search
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView;
    MenuItem item = menu.findItem(R.id.menu_search);
    if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ){
        searchView = (SearchView) item.getActionView();
    }
    else{
        searchView = (SearchView) MenuItemCompat.getActionView(item);
    }
    searchView.setSearchableInfo( searchManager.getSearchableInfo( getComponentName() ) );
    searchView.setQueryHint( getResources().getString(R.string.search_hint) );


    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.

    switch (item.getItemId()) {
        case R.id.menu_search:
            onSearchRequested();
            return true;
        default:
            return false;
    }
    /*
    int id = item.getItemId();
    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }
    */

    //return super.onOptionsItemSelected(item);
}

public class Searchable implements SearchView.OnQueryTextListener {

    @Override
    public boolean onQueryTextSubmit(String query) {
        Log.i(MsnLog, "----------  Searchable --- onQueryTextSubmit ----------");
        Log.i(MsnLog, "onQueryTextSubmit(String" + query + ") ");
        filterProduto(query);

        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        Log.i(MsnLog, "----------  Searchable --- onQueryTextChange ----------");
        Log.i(MsnLog, "onQueryTextChange(String " + newText + " ) ");
        filterProduto(newText);
        return false;
    }

    public void filterProduto( String q ){
        Log.i(MsnLog, " ");
        Log.i(MsnLog, "----------  Searchable --- filterProduto ----------");
        Log.i(MsnLog, " String q = "+ q);

        Listaux.clear();
        Log.i(MsnLog, "filterProduto -- listp.size()= "+ listp.size());
        for( int i = 0, tamI = listp.size(); i < tamI; i++ ){
            Log.i(MsnLog, " int i = 0,"+ tamI +" = "+listp.size()+ "; "+ i + " < " +tamI+ "; "+i+"++ ");
            if( listp.get(i).getNmProduto().toLowerCase().startsWith( q.toLowerCase() ) ){
                Log.i(MsnLog, "listp.get(i) = "+ listp.get(i));
                Listaux.add( listp.get(i) );
                Log.i(MsnLog, "Listaux.add) = "+ listp.get(i));
            }
        }

        if( Listaux.isEmpty() ){
            Log.i(MsnLog, "Lista - Listaux Vasia");
        }
        Log.i(MsnLog, "Listaux " + Listaux.getClass());
        Adapter.notifyDataSetChanged();
    }
}

}
public class活动列表aproduto扩展活动{
//列表活动
受保护的静态最终字符串MsnLog=“log MeuSQLite”;
私有列表查看我的列表;
私有活动列表ProdutoAdapter适配器;
私有搜索视图搜索视图;
私人积垢;
私人按钮代表;
列表列表p;
列表列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.i(MsnLog,“”);
Log.i(MsnLog,“========================================================================================”;
setContentView(R.layout.activity\u lista\u produto);
//将java中的listView与xml中创建的listView关联起来
my_List=(ListView)findViewById(R.id.mylist);
//准备SearchView
searchView=新的searchView(此);
searchView=(searchView)findviewbyd(R.id.search);
caregardb();
Adapter=新活动ListaProdutoAdapter(此,Listaux);
my_List.setAdapter(适配器);
//搜寻
setOnQueryTextListener(新的Searchable());
deletarBt=(按钮)findViewById(R.id.btnBusca);
deletarBt.setOnClickListener(新建按钮.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.i(MsnLog,“”);
Log.i(MsnLog,“------------ActivityListaProduto--onClick-----------------”;
//搜寻
可搜索b;
setOnQueryTextListener(新的Searchable());
Adapter.notifyDataSetChanged();
/*
SearchManager SearchManager=(SearchManager)getSystemService(Context.SEARCH\u服务);
搜索视图搜索视图;
searchView=(searchView)findviewbyd(R.id.search);
Log.i(MsnLog,“searchView=“+searchView”);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName());
Log.i(MsnLog,“searchView=“+searchView.getClass().toString());
setQueryHint(getResources().getString(R.string.search_hint));
Log.i(MsnLog,“--->vai para tela可搜索活动”);
//ActivityListaProdutoAdapter.this.notifyDataSetChanged();
//Adapter.notifyDataSetChanged();
//Log.i(MsnLog,“--->Adapter.notifyDataSetChanged()”;
*/
}
});
}
公共图书馆b({
积垢bd=新积垢(本);
listp=bd.buscar();
i(MsnLog,“onCreate--listp.size()=”+listp.size());
listax=listp;
Log.i(MsnLog,“onCreate--Listaux.size()2=“+Listaux.size());
i(MsnLog,“onCreate--listp.size()=”+listp.size());
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.menu\u activity\u lista\u produto,menu);
//试验
/*
SearchManager SearchManager=(SearchManager)getSystemService(Context.SEARCH\u服务);
SearchView SearchView=(SearchView)menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName());
searchView.setIconifiedByDefault(false);
*/
//搜寻
SearchManager SearchManager=(SearchManager)getSystemService(Context.SEARCH\u服务);
搜索视图搜索视图;
MenuItem=menu.findItem(R.id.menu\u搜索);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.hyboone){
searchView=(searchView)项。getActionView();
}
否则{
searchView=(searchView)MenuItemCompat.getActionView(项);
}
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName());
setQueryHint(getResources().getString(R.string.search_hint));
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
开关(item.getItemId()){
案例R.id.菜单搜索:
onSearchRequested();
返回true;
违约:
返回false;
}
/*
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
*/
//返回super.onOptionsItemSelected(项目);
}
公共类Searchable实现SearchView.OnQueryTextListener{
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
Log.i(MsnLog,“------------可搜索----onquerytexsubmit-----------------”;
Log.i(MsnLog,“onquerytexsubmit(字符串“+query+”));
filterProduto(查询);
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
Log.i(MsnLog,“------------可搜索--onQueryTextChange------------”;
Log.i(MsnLog,“onQueryTextChange(字符串“+newText+”));
filterProduto(新文本);
返回false;
}
公共无效筛选器Produto(字符串q){
Log.i(MsnLog,“”);
Log.i(MsnLog,“------------可搜索---filterProduto------”;
Log.i(MsnLog,“字符串q=”+q);
Listaux.clear();
Log.i(MsnLog,“filterProduto--listp.size()=”+listp.size());
for(inti=0,tamI=listp.size();i