【发布时间】:2021-05-04 09:59:02
【问题描述】:
当我使用 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 传递到下面给出的另一个意图,其中结果是从我需要作为 itemsposition 的数据库中获取的位置编号。
包 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);
}
}
【问题讨论】:
-
您可以尝试评论
MainActivity.this.arrayAdapter.getFilter().filter(query);吗? -
我在 searchView sr_txt 中给出了这个。 SetOnQueryTextListener 并且搜索正在工作,它列出了来自 listview 的结果,但在 onclicklistener 上它不起作用,它给了我 listview 的位置而不是项目的位置。
-
当然会给你项目在listView中的位置!如果您需要一些标识符,您必须在您的对象中添加字段,您可以通过它了解它是什么项目
-
你能解释一下吗?
标签: android firebase android-listview searchview