无法在Android中使用自定义数组适配器来搜索?自定义、数组、适配器、Android

2023-09-04 07:11:15 作者:瑾澜

我无法从列表视图搜索,我想尽各种办法,但它不是为我工作(无故障)。我有其他的搜索方式,但我想使这个可能的方式。

I am unable to search from listview, i tried various ways, but its not working for me(No Errors). I have other way to search but i want to make this way possible.

下面是code

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());
}
 }

任何帮助将是非常美联社preciated ..

Any Help would be highly appreciated..

感谢

推荐答案

我要转用搜索实现的可筛选的另一种方式

请看到类似的答案 我提供

Please see similar answer given by me