2016-12-10 16 views
1

検索バーを使用してAndroidリストビューをフィルタリングする際に問題が発生しました。 コードを展開してCustomListクラスを追加する前に問題なく動作しました。 CustomListクラスは、イメージとサブテキストを含むListViewにデータを格納するためのクラスです。私のCustomListクラスは、ArrayAdapterを継承しています。検索とフィルタリングAndroidリストビュー

これは、両方のクラス

public class CustomList extends ArrayAdapter<String> { 

private final Activity context; 
private final String[] languages; 

public CustomList(Activity context, String[] languages) { 
    super(context, R.layout.list_single, languages); 
    this.context = context; 
    this.languages = languages; 
} 
} 

とMainActivityから関連するコードです:私は、検索バーにテキストを入力すると

public class MainActivity extends Activity { 

CustomList adapter; 
ListView list; 
EditText searchBar; 

String[] languages = { "ActionScript", "Ajax", "Python", "Java", "JavaScript", "C++", "C#", "C", "NASM", "Assembly", 
     "PHP", "R", "Scala", "TeX", "Visual Basic", "Fortran", "COBOL", "Lisp", "Lua", "Ruby", "XML", }; 

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

    Arrays.sort(languages); 

    searchBar = (EditText) findViewById(R.id.searchBarTI); 

    adapter = new CustomList(MainActivity.this, languages); 
    list = (ListView) findViewById(R.id.listVw); 
    list.setTextFilterEnabled(true); 

    list.setAdapter(adapter); 

    searchBar.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
      MainActivity.this.adapter.getFilter().filter(cs); 
     } 
    }); 
} 
} 

、リストビュー内の唯一の最初の要素が残っています。残りは除外されています

Image of the bug

私は私が去るか、見ていないですかわからないです。誰かが助けてください。

答えて

1

ArrayAdapterをカスタマイズする場合は、アダプタでデータを検索するためのフィルタリング可能なインターフェイスを実装する必要があります。

は、下のリンクをチェックアウト: Custom getFilter in custom ArrayAdapter in android

+0

を、私はこのチュートリアルに続き、それが機能するようになりました。各ListViewアイテムにカスタムモデルクラスを追加する必要がありました。http://www.survivingwithandroid.com/2012/10/android-listview-custom-filter-and.html – zimspy

関連する問題