首页 > 解决方案 > 单击listView项目时如何在Searchview中设置文本

问题描述

我正在使用 SearchView。当我在 Searchview 中编写查询时,会出现一个项目列表(建议列表)。当我单击列表项时,列表项的文本不会显示在 Searchview 中。我已经尝试过建议侦听器,但应用程序通过此方法停止工作。如何在 SearchView 中显示单击项目的文本。我也试过 setquery() 但它只适用于第一个或一些项目,当我单击另一个项目时它会停止应用程序。当我删除 setQuery() 时它工作正常但名称未显示在 SearchView 中。这是代码的一部分。CustomAdapter.java

convertView.setOnClickListener(new View.OnClickListener() {

TextView txtView = (TextView) ((MainActivity)c).findViewById(R.id.textView);

@Override
public void onClick(View v) {

    txtView.setText("");
    SearchView sv=(SearchView) ((MainActivity)c).findViewById(R.id.sv);
    sv.setQuery(""+planets.get(pos).getName(),false);
    sv.clearFocus();
    String d=planets.get(pos).getPrice();
    int id1=planets.get(pos).getId();
    String text=planets.get(pos).getName();

    txtView.setText(id1 + System.getProperty ("line.separator") +text + System.getProperty ("line.separator") +d);

    planets.clear();
    v.setVisibility(View.GONE);
    txtView.setVisibility(View.VISIBLE);
}

});

这是调试错误

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.tutorials.hp.sqlitefilterlistview, PID: 22679
                  java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
                      at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:260)
                      at java.util.ArrayList.get(ArrayList.java:313)
                      at com.tutorials.hp.sqlitefilterlistview.mListView.CustomAdapter$1.onClick(CustomAdapter.java:106)
                      at android.view.View.performClick(View.java:5265)
                      at android.view.View$PerformClick.run(View.java:21534)
                      at android.os.Handler.handleCallback(Handler.java:815)
                      at android.os.Handler.dispatchMessage(Handler.java:104)
                      at android.os.Looper.loop(Looper.java:207)
                      at android.app.ActivityThread.main(ActivityThread.java:5728)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
I/Process: Sending signal. PID: 22679 SIG: 9
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'

它指向行 CustomAdapter.java(106) 这是

String d=planets.get(pos).getPrice();

我该如何解决这个问题?

标签: androidtextviewsearchview

解决方案


我也尝试过 setQuery() 但它仅适用于第一个或某些项目,当我单击另一个项目时它会停止应用程序。

是的,它看起来 setQuery(text, false)就是您所需要的。现在,该应用程序适用于某些项目和其他崩溃的事实很可能与setQuery(..).

例如,如果pos变量超出planets列表大小的界限,则调用planets.get(pos)将失败并显示IndexOutOfBoundsException,但请检查堆栈跟踪,它会告诉您应用程序崩溃的确切原因。


推荐阅读