问题描述
当我使用 itemclicklistener 从 firebase 获取数据到 listview 并且它工作正常时,
但是当我向列表视图添加搜索视图时,搜索视图将在此处获取 itementer 图像描述,但 itemclicklistener 显示错误结果(显示其位置),请帮忙。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btMenu = findViewById(R.id.btMenu);
sr_txt = findViewById(R.id.sr_txt);
listView = findViewById(R.id.listView);
databaseReference = FirebaseDatabase.getInstance().getReference("dreamapp");
dream1 = new Dream();
title_list = new ArrayList<>();
answer_list = new ArrayList<>();
arrayAdapter = new ArrayAdapter<>(this,R.layout.item,R.id.item,title_list);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot d:snapshot.getChildren())
{
dream1 = d.getValue(Dream.class);
title_list.add(dream1.getTitle());
answer_list.add(dream1.getAnswer());
}
listView.setAdapter(arrayAdapter);
listView.setonItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view,int i,long id) {
Intent intent = new Intent(MainActivity.this,answer.class);
String p=answer_list.get(i);
intent.putExtra("answer",p);
startActivity(intent);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
sr_txt.setonQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
MainActivity.this.arrayAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
MainActivity.this.arrayAdapter.getFilter().filter(newText);
return false;
}
});
}
并且我已将答案列表值从 firebase 传递到下面给出的另一个意图,结果是从数据库中获取位置编号作为项目位置。
包 com.example.dreamapp;
导入 androidx.appcompat.app.AppCompatActivity;
导入android.os.Bundle; 导入 android.widget.TextView;
公开课答案扩展了 AppCompatActivity {
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_answer);
textView1 = findViewById(R.id.answertext);
String answertxt = getIntent().getStringExtra("answer");
textView1.setText(answertxt);
}
}
解决方法
嗨,我找到了解决方案,当我再添加一个 arrayadapter 和 listview 时,我在搜索视图中使用它然后它起作用了,如果我搜索其中的确切单词,它会得到结果,
sr_txt.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
MainActivity.this.arrayAdapter.getFilter().filter(query);
MainActivity.this.arrayAdapter2.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
MainActivity.this.arrayAdapter.getFilter().filter(newText);
MainActivity.this.arrayAdapter2.getFilter().filter(newText);
return false;
}
});
和搜索视图
sr_txt.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
MainActivity.this.arrayAdapter.getFilter().filter(query);
MainActivity.this.arrayAdapter2.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
MainActivity.this.arrayAdapter.getFilter().filter(newText);
MainActivity.this.arrayAdapter2.getFilter().filter(newText);
return false;
}
});
但是我仍然面临 searchView 的问题,当我搜索它时,它会从数组中搜索整个字符,如果我只能从中搜索五个字符,我需要一个解决方案,它会正常工作。