마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Adapter listview 이름 검색이 안됩니다

0 추천

http://tansanc.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8B%A4%EC%8A%B5 예제를 변형해서 주소록 검색되게 하려는데 변화가 없습니다

 

로그찍으니까 OnTextChanged는 들어가는데 정작 List는 아무것도 나오지 않아요

주소록은 뜸         '이'로 검색하면 모든 리스트 사라짐 


public class ContactListActivity extends Activity {

   private ListView lv_contactlist;
   EditText textResult;

   ContactsAdapter adapter;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_contactlist);
      lv_contactlist = (ListView) findViewById(R.id.lv_contactlist);

      //lv_contactlist.setTextFilterEnabled(true);
      textResult = (EditText)findViewById(R.id.textResult);

      adapter = new ContactsAdapter(ContactListActivity.this,
            R.layout.layout_phonelist, getContactList());

      lv_contactlist.setAdapter(adapter);

      textResult.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

         }

         @Override
         public void onTextChanged(CharSequence cs, int i, int i1, int i2) {
            ContactListActivity.this.adapter.getFilter().filter(cs.toString());
            Log.d("TedPark","TextChanged");
            // adapter.getFilter().filter(cs);
            // adapter.notifyDataSetChanged();
            // lv_contactlist.setAdapter(adapter);

         }

         @Override
         public void afterTextChanged(Editable editable) {

         }
      });
   }

   @Override
   protected void onResume() {
      super.onResume();

      adapter = new ContactsAdapter(ContactListActivity.this,
            R.layout.layout_phonelist, getContactList());

      lv_contactlist.setAdapter(adapter);
      lv_contactlist
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {

               @Override
               public void onItemClick(AdapterView<?> contactlist, View v,
                                 int position, long resid) {
                  Contact phonenumber = (Contact) contactlist
                        .getItemAtPosition(position);

                  if (phonenumber == null) {
                     return;
                  }


               }
            });

   }

   /**
    * 연락처를 가져오는 메소드.
    *
    * @return
    */
   private ArrayList<Contact> getContactList() {... }

   private class ContactsAdapter extends ArrayAdapter<Contact> {...}
}
눈온다다다 (730 포인트) 님이 2016년 3월 12일 질문

1개의 답변

0 추천
아예 Adapter를 만드는 클래스에서 키 입력이 들어왔을 경우 어뎁터의 구성을 새로 해주는걸 추천해드리고 싶네요

변경 전 Adapter        변경후  Adapter

       가~~~            아~~~~

       나~~~            악~~~~

이렇게 키 입력이 들어올 때마다 어뎁터의 데이터를 새로 새팅해주는거져

제가 개인적으로 Filter라는 클래스를 쓴적은 없지만 그런식으로 구성해주면 될 거 같습니다
hhjung1202 (1,280 포인트) 님이 2016년 3월 12일 답변
...