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