Сортировка ListBiew по Spinner в андроиде? - PullRequest
0 голосов
/ 16 марта 2012

У меня есть один ListView и один Spinner.Spinner расположен в правой верхней части макета.Мой ListView содержит некоторые имена (например, названия стран), а счетчик имеет несколько алфавитов (az).Предположим, что если я выберу букву "f" из Spinner, в моем ListView должны отображаться названия стран, которые начинаются только с буквы "f".Я хочу отсортировать ListView по значениям из Spinner?

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Попробуйте использовать метод getFilter() адаптера ListView:

        String[] filterL = { "a", "b", "c" }; //etc
        //...

        Spinner spin = (Spinner) findViewById(R.id.spinner1);
        final ArrayAdapter<String> aspin = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, filterL); //the adapter for the Spinner
        aspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aspin);
        final ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, countries); //the adapter for the list
        setListAdapter(aa); //set the adapter for the list(if you extend LisActivity) or call setAdapter on the ListView element
        //add the listener:
        spin.setOnItemSelectedListener(new OnItemSelectedListener() {
            boolean status = false;

            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long arg3) {
                if (!status) {
                    status = true;
                    return;
                }

                aa.getFilter().filter(filterL[position]);
            }

            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });
1 голос
/ 16 марта 2012

Вам необходимо реализовать фильтр для вашего ListView.Каждый раз, когда вызывается OnItemSelectedListener вашего Spinner, вам необходимо фильтровать элементы.Если вы не уверены, как реализовать фильтр в адаптере вашего ListView, взгляните на это: Фильтрация ListView с помощью специального (объектного) адаптера

Я думаю, что не будет никакого способавокруг реализации собственного ListAdapter (это легко).

...