2014-03-30 6 views
0

해당 ListView가있는 어댑터를 설정하고 있습니다. 어댑터와 ListView를 필터링하면 카운트를 출력하지만 여전히 동일합니다. 그러나 응용 프로그램에서는 listView가 필터 입력 (이 경우 "Berlin")과 일치하는 항목 만 표시하므로 필터링 된 것 같습니다.ListView 및 어댑터 필터가 업데이트되지 않습니다.

String string_list[] = {"Paris", "London", "Milano", "Madrid", "Berlin", "Moscow", "Washington" }; 

    // Set up ListView and Adapter 
    myAdapt = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,string_list); 
    myListView.setAdapter(myAdapt); 
    myListView.setItemsCanFocus(false); 
    myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View itemView, int position, 
       long arg3) { 
      // One of my methods 
      manageFavorites(arg0, itemView, position, arg3, myListView); 
     } 
    }); 
    // Debug 
    myAdapt.getFilter().filter("B"); 
    tv1.setText("myAdapt.getCount() =" + myAdapt.getCount()); 

    myListView.setTextFilterEnabled(true); 
    myListView.setFilterText("B"); 
    tv2.setText("myListView.getCount() =" + myListView.getCount()); 

어댑터 또는리스트 뷰에 필터를 호출 할 때, 변수는 파일러에 따라 변경하는 방법이 있는가? 이 경우 문자 B을 사용하여 myAdaptmyListView을 필터링하므로 Berlin 인 문자와 일치하는 항목 만 myAdaptmyListView에만 표시하고 싶습니다.

내 수업은 Activity입니다. SOF에서 보았던 것처럼 ListActivity 또는 CustomAdapter을 사용해야한다고 지적하십시오.

답변

1

필터링이 완료되면 트리거되는 수신기에 필터를 추가해야합니다.

myAdapt.getFilter().filter("B", new Filter.FilterListener() { 
    public void onFilterComplete(int count) { 
     tv2.setText("myListView.getCount() =" + count);  
    } 
} 

자세한 내용은 Android 참조 서의 Filter class을 참조하십시오.

+0

그건 속임수 였어, 고마워! – solalito

관련 문제