2017-02-10 10 views
-2

ここに実装していますSearchViewオーバーコンタクトlistview searchviewが動作しておらず、エラーが発生します。私を助けてください。私はアンドロイドの新人です listviewのゲッター&セッタークラスを作成していて、adapterという名前で "Custom_adapter"を作成しています。ここに私のMainActivityコードは私がここにこだわって助けてください。SearchViewがリストビューの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にフィルタリングを実装しようとしています。 代わりに、SearchViewの検索フィルタにメインCustom_adapterのフィルタを設定する必要があります。

また、listView.setAdapterを2回呼び出す必要はありません。onClickの内側で2番目のメッセージを削除する必要があります。

関連する問題