当前位置: 首页 > 知识库问答 >
问题:

listview项单击listener在searchview中获取错误数据

万俟铭
2023-03-14
@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;
        }
    });


}

public class应答扩展AppCompattivity{

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);


}

}

共有1个答案

聂季同
2023-03-14

嗨,我找到了解决方案,当我添加了一个arrayadapter和listview,然后我在searchview中使用它,然后它工作了,如果我搜索其中的确切单词,它就会得到结果,

 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

 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;
        }
    });

但是我仍然面临着一个问题,当我搜索它从数组中搜索整个字符时,我需要一个解决方案如果我只能从它中搜索五个字符,它将会很好地工作。

 类似资料:
  • 这是我的listview点击事件: 这是我的按钮点击事件: 现在,我需要获得单击的listview项的位置。我已经声明了全局位置,但这总是给我位置1。 有人能告诉我怎么得到这个职位吗?

  • 我有一个从适配器展开的列表视图。当我点击其中一个按钮时,我得到了错误的项目。在我添加了< code>whatsApp按钮之前,它一直工作正常。 这是我的适配器: 在代码中添加了一个onClickListener,如果按下waze按钮,它将检查位置,如果按下whatsapp按钮,则检查名称。这是代码 如何更改此项以获得正确的项目?

  • 我为listview的每个项目都有按钮。单击按钮时,它必须获取相应listview项的值。 下面是我的getView方法。 我调用按钮如下在我的代码... 但我得到空指针异常,而这样做。我怎样才能解决这个问题? 下面是我的日志 com.vaighai.fragments.MyOrdersFragment$2$1.onClick(MyOrdersFragment.java:253)上的java.la

  • 问题内容: 在Xamarin.Android应用程序中,我有一个以前填充的ListView。在正确触发的listview_ItemClick事件处理程序中,我想检索单击的listview- item视图的文本,以便在AlertDialog中显示有关它的一些信息。 我的代码无法正常工作,因为我所能得到的只是一个Java.Lang.Object(lvItem),而且我不知道如何从中提取所需的视图。 如

  • 我想在对话框中执行一个可扩展的listview,但在设置适配器的行中出现错误。 logcat

  • 我有一个这样的列表视图 这很好,因为它会遍历我的 table1 项。该列表包含名称和价格。我的问题是如何通过鼠标点击一个项目来删除项目,然后点击一个说删除的按钮?我看到的问题是,我不知道有多少项目可用,这取决于用户添加了多少个项目。