0

名前のリスト (Firstname + LastName) があり、その listView で Firstname と lastname で検索したい。このコードを使用して、frstname のみで検索しています

ListView での Android 検索の例

ファーストネームとラストネームでも検索できるように、コードを変更する必要があることを誰かに教えてもらえますか?

4

2 に答える 2

0

ArrayAdapter には既にフィルター機能があり、ListView は検索テキストを受け入れることができるため、車輪を再発明する必要はありません。

例:

データに複数のオブジェクトがある場合は常に、クラスにデータを保持させます。

Public class FullName {
  public final String firstName;
  public final String lastName;

  public Fullname(String fn, String ln){
    this.firstName = fn;
    this.lastName  = ln;
  }

  @Override
  public String toString(){
    // this is what ArrayAdapter uses for display and search
    return firstName + " " + lastName; 
  }
}

内部活動:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  ListView nameList = new ListView(this);

  setContentView(nameList);

  ArrayAdapter<FullName> nameAdapter = new ArrayAdapter<FullName>(this,android.R.layout.simple_list_item_1);

  nameAdapter.add( new FullName("John","Doe")    );
  nameAdapter.add( new FullName("Bob","Carson")  );
  nameAdapter.add( new FullName("Kyle","Connor") );

  nameList.setAdapter(nameAdapter);

  //bring up the keyboard, start typing on a ListView and it will filter out matching results
  nameList.setTextFilterEnabled(true);
}

EditText を使用して本当に検索したい場合:

 nameAdapter.getFilter.filter(myEditText.getText());

クリアフィルター:

 nameAdapter.getFilter.filter(null);
于 2012-12-03T06:52:46.907 に答える