2017-02-10 38 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內的第二個。

相關問題