2017-02-10 45 views
-2

在这里我实现一个SearchView过接触listview搜索查看不工作,并给出错误。请任何人帮助我。我是新到Android 我创建的getter &二传手类listview创造adapter名为“Custom_adapter”。这是我的MainActivity代码,请帮助我,我被困在这里。搜索查看是不是在我的Android应用程序的工作列表视图上

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

     } 
} 

回答

0

你打电话listView.setAdapter(new Custom_adapter...但此时你在另一个,未使用的,适配器ArrayAdapter实施过滤。 而应该有搜索查看搜索过滤你的主要Custom_adapter

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

相关问题