-1

から検索できませんlistview。さまざまな方法を試しましたが、うまくいきません(エラーなし)。検索する方法は他にもありますが、この方法を可能にしたいと考えています。

ここにコードがあります

public class MainActivity extends Activity implements TextWatcher   {

CustomAdapter mAdapter;
ListView mListview;
EditText search;
List<String> tempCity, cityNames;
String list[];

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    init();

    bindComponents();

    addListeners();
}

private void addListeners() {
    // TODO Auto-generated method stub

    search.addTextChangedListener(this);
}

private void init() {
    // TODO Auto-generated method stub

    mPos = new ArrayList<Integer>();
    tempCity = new ArrayList<String>();
    cityNames = new ArrayList<String>();
    list = getResources().getStringArray(R.array.cityList);
    cityNames.addAll(Arrays.asList(list));


}



private void bindComponents() {
    // TODO Auto-generated method stub

    mListview = (ListView) findViewById(R.id.cityList);

    mAdapter = new CustomAdapter();
    search = (EditText) findViewById(R.id.eTsearch);
    mListview.setAdapter(mAdapter);

}

public class CustomAdapter extends ArrayAdapter<String> {

    public CustomAdapter() {
        super(MainActivity.this, android.R.layout.simple_list_item_1,
                cityNames);
        // TODO Auto-generated constructor stub

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return cityNames.size();
    }

    @Override
    public String getItem(int pos) {
        // TODO Auto-generated method stub
        return cityNames.get(pos);
    }

    @Override
    public long getItemId(int pos) {
        // TODO Auto-generated method stub
        return pos;
    }

    @Override
    public View getView(int pos, View v, ViewGroup vGroup) {
        // TODO Auto-generated method stub

        View row = v;

        if (row == null) {

            row = getLayoutInflater().inflate(R.layout.main_row, null);

        }

        TextView mCityTv = (TextView) row.findViewById(R.id.itemTv);
        mCityTv.setText(cityNames.get(pos));

        return row;
    }

}

@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    // TODO Auto-generated method stub

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub

    mAdapter.getFilter().filter(s.toString());
}
 }

どんな助けでも大歓迎です..

ありがとう

4

2 に答える 2

0

Implementing Filterableクラスで検索する別の方法を切り替える必要があります

私が与えた同様の答えを見てください

于 2013-01-21T17:45:02.083 に答える
0

1) ListView を呼び出しmListview.setTextFilterEnabled(true);てフィルタリングを有効にする

2)CustomAdapterクラスに関連するコンストラクターを作成します。コンテキストとさまざまなリソース/データを渡す必要があります。それを読んでください: http://developer.android.com/reference/android/widget/ArrayAdapter.html

また

TextWatcher リンクされた hereを使用してください。

于 2013-01-18T20:36:56.493 に答える