Android 从sqllite填充ArrayList,并检查它是否包含

Android 从sqllite填充ArrayList,并检查它是否包含,android,sqlite,Android,Sqlite,我正在填充sqllite数据库中字符串的ArrayList。用户键入要查找的值,搜索结果将显示在列表视图中。现在,当我在数据库中输入几个条目时,它总是包含所有数据。我想用java而不是Sql查询进行搜索,我的代码似乎在某种程度上可以工作,但它并没有真正做到我希望它做的事情。我做错了什么 public void searchEventDetails(){ final ArrayList<String> dbEntries = new ArrayList<>();

我正在填充sqllite数据库中字符串的ArrayList。用户键入要查找的值,搜索结果将显示在列表视图中。现在,当我在数据库中输入几个条目时,它总是包含所有数据。我想用java而不是Sql查询进行搜索,我的代码似乎在某种程度上可以工作,但它并没有真正做到我希望它做的事情。我做错了什么

public void searchEventDetails(){

    final ArrayList<String> dbEntries = new ArrayList<>();
    final ArrayList<String> entryId = new ArrayList<>();

    Cursor cursor = eventDB.getAllDataSearch();

    if (cursor.moveToFirst()){
        do{

                dbEntries.add("Title: "+ cursor.getString(1)+"\n" + "Description: "+cursor.getString(2));

               entryId.add(cursor.getString(0));

        }while(cursor.moveToNext());
    }
    cursor.close();

        if (dbEntries.contains(txtSearch.getText())){
            System.out.print("Value");
        }
        ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dbEntries);

        ListView listView = (ListView) findViewById(R.id.listViewFromDBSearch);

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String itemSelected = "You Selected " + String.valueOf(parent.getItemAtPosition(position));
                Toast.makeText(SearchEvent.this, itemSelected, Toast.LENGTH_SHORT).show();
                Intent showSearchEvents = new Intent(getApplicationContext(),ShowSearchEvents.class);
                search = String.valueOf(parent.getItemAtPosition(position));

                for (int i=0;i<dbEntries.size();i++){
                    if (search.equals(dbEntries.get(i))){

                        SearchEvent.this.id = entryId.get(i);
                    }

                }
                showSearchEvents.putExtra("id", SearchEvent.this.id);
                startActivity(showSearchEvents);
            }
        });
}
public void searchEventDetails(){
final ArrayList dbEntries=new ArrayList();
最终ArrayList entryId=新ArrayList();
Cursor Cursor=eventDB.getAllDataSearch();
if(cursor.moveToFirst()){
做{
dbEntries.add(“标题:“+cursor.getString(1)+”\n“+”说明:“+cursor.getString(2));
add(cursor.getString(0));
}while(cursor.moveToNext());
}
cursor.close();
if(dbEntries.contains(txtSearch.getText())){
系统输出打印(“值”);
}
ListAdapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,dbEntries);
ListView ListView=(ListView)findViewById(R.id.listViewFromDBSearch);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
String itemSelected=“您选择的”+String.valueOf(parent.getItemAtPosition(position));
Toast.makeText(SearchEvent.this,itemSelected,Toast.LENGTH_SHORT).show();
Intent showSearchEvents=新Intent(getApplicationContext(),showSearchEvents.class);
search=String.valueOf(parent.getItemAtPosition(position));

对于(inti=0;i你必须这样做

public void searchEventDetails(String search){

    final ArrayList<String> dbEntries = new ArrayList<>();
    final ArrayList<String> entryId = new ArrayList<>();

    Cursor cursor = eventDB.getAllDataSearch(search);

    if (cursor.moveToFirst()){
        do{

                dbEntries.add("Title: "+ cursor.getString(1)+"\n" + "Description: "+cursor.getString(2));

               entryId.add(cursor.getString(0));

        }while(cursor.moveToNext());
    }
    cursor.close();


        ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dbEntries);

        ListView listView = (ListView) findViewById(R.id.listViewFromDBSearch);

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String itemSelected = "You Selected " + String.valueOf(parent.getItemAtPosition(position));
                Toast.makeText(SearchEvent.this, itemSelected, Toast.LENGTH_SHORT).show();
                Intent showSearchEvents = new Intent(getApplicationContext(),ShowSearchEvents.class);
                search = String.valueOf(parent.getItemAtPosition(position));

                for (int i=0;i<dbEntries.size();i++){
                    if (search.equals(dbEntries.get(i))){

                        SearchEvent.this.id = entryId.get(i);
                    }

                }
                showSearchEvents.putExtra("id", SearchEvent.this.id);
                startActivity(showSearchEvents);
            }
        });
}
别忘了在EditeText中使用textwatcher

txtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // Call back the Adapter with current character to Filter

             searchEventDetails(txtSearch.getText().toString());

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });

希望此答案有助于

顺便说一句,在onCreate中传输listView.setOnItemClickListener
txtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // Call back the Adapter with current character to Filter

             searchEventDetails(txtSearch.getText().toString());

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });