【问题标题】:SearchView Is not working in my android application on listviewSearchView 在我的列表视图上的 android 应用程序中不起作用
【发布时间】:2017-02-10 18:20:33
【问题描述】:

在这里我正在实施SearchViewOver 联系人listview 搜索视图不起作用并给出错误。拜托,任何人都可以帮助我。我是安卓新手 我正在为listview 创建getter 和setter 类,并创建名称为“Custom_adapter”的adapter。这是我的MainActivity 代码,请帮助我,我被困在这里。

     public class MainActivity extends AppCompatActivity {

    ListView listView;
    Button sync;

   String name, phone;
//Adapter adapter;
Intent intent;
ProgressDialog progressDialog;
TextView tv_count;
ArrayList<Contact_list> listitem;
SearchView searchView;
ArrayAdapter<Contact_list> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv_count= (TextView) findViewById(R.id.tv_size);
   // tv_count.setText("hello");


    listitem = new ArrayList<Contact_list>();

      listView = (ListView) findViewById(R.id.listViewID);

    registerForContextMenu(listView);


    //for searchview
    searchView= (SearchView) findViewById(R.id.searchID);


    sync= (Button) findViewById(R.id.syncID);
    sync.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // GET CONTACTS DATA


           GetContactsIntoArrayList();


        }
    });
}
public void GetContactsIntoArrayList(){
    Cursor cursor;
    cursor =  getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null, null, null);

    while (cursor.moveToNext()) {

        name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME ));

        phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        listitem.add(new Contact_list(name,phone));


        listView.setAdapter(new Custom_adapter(MainActivity.this, listitem));

                             /**
                             * for searchview
                             */
                            adapter = new ArrayAdapter<Contact_list>(this,
                                    R.layout.custom_adapter,  listitem);


                            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                                @Override
                                public boolean onQueryTextSubmit(String query) {

                                    return false;
                                }

                                @Override
                                public boolean onQueryTextChange(String newText) {

                                //it gives error on this line
                                    adapter.getFilter().filter(newText);
                                    // adapter.getF
                                    return false;
                                }
                            });

    }

    cursor.close();

        }
}

【问题讨论】:

    标签: android listview searchview


    【解决方案1】:

    您正在调用listView.setAdapter(new Custom_adapter...,但随后您正在对另一个未使用的适配器ArrayAdapter 实施过滤。 相反,您应该让 SearchView 搜索过滤您的主要 Custom_adapter

    另外,您不应该两次调用 listView.setAdapter,删除 onClick 中的第二个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-29
      • 2016-07-08
      • 2015-10-19
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多