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

TextWatcher에 대해 궁금해서 여쭤봅니다.

0 추천
public class MainActivity extends Activity {


    /**
     * Called when the activity is first created.
     */

    private ListView lv1;
    private String lv_arr[] =
            {"Android", "iPhone", "BlackBerry", "me", "J2ME", "Listview", "ArrayAdapter", "ListItem", "Us", "UK", "India"};
    ListView lst;
    EditText edt;
    ArrayAdapter<String> arrad;

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


        lv1 = (ListView) findViewById(R.id.ListView01);
        edt = (EditText) findViewById(R.id.EditText01);

        arrad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lv_arr);
        lv1.setAdapter(arrad);

        // By using setTextFilterEnabled method in listview we can filter the listview items.

        lv1.setTextFilterEnabled(true);
        edt.addTextChangedListener(new TextWatcher() {


            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
                MainActivity.this.arrad.getFilter().filter(arg0);

            }
        });

    }
}

 

안녕하세요. 안드로이드 공부를 하는 학생입니다.

저는 EditText에 값을 입력했을 때 ListView에 있는 항목들을 실시간으로 검색하는 것을 하고 싶습니다.

TextWatcher를 이용하면 가능하다고 해서, 공부를 하던 중에 궁금한 점이 있어 질문을 올립니다.

위 코드는 stackoverflow에서 가져왔습니다.

 

위 코드를 실행시키면 실행은 잘되지만, 제 코드에 적용시키기 쉽지 않네요..

저는 baseAdapter를 상속받아, custom arrayAdapter를 만들었는데,

이런 경우에는 저 코드를 그대로 이용할 수 없는 것일까요?

또한 afterTextChanged 메소드에 getFilter()는 어떻게 사용되는 것인지..

초보자에게 도움을 주시면 감사하겠습니다.

mcflurry (370 포인트) 님이 2014년 12월 7일 질문

1개의 답변

0 추천
 
채택된 답변
BaseAdapter를 상속받아 만든게 ArrayAdapter입니다.

님이 만드신것은 Custom arrayAdapter가 아니라 Custom baseAdapter입니다.

그러므로 ArrayAdapter를 상속받아 Custom ArrayAdapter를 만드시면 그대로 사용가능합니다.
q1212 (26,020 포인트) 님이 2014년 12월 8일 답변
mcflurry님이 2014년 12월 8일 채택됨
아. 이해를 완전히 잘못하고 있었네요..
감사합니다. 다시해보겠습니다.
...