Как сделать, чтобы первый элемент ListView был выбран по умолчанию при запуске? - PullRequest
10 голосов
/ 06 марта 2012

В моем приложении есть ListView, а в ListView есть селектор.Я хочу, чтобы первый элемент этого ListView был выбран по умолчанию при самом запуске приложения . Как?Кто-нибудь может дать несколько советов?THX много.

Ответы [ 13 ]

0 голосов
/ 17 октября 2016

ЭТО РАБОТАЕТ ДЛЯ МЕНЯ. Вы должны сделать специальный адаптер.

     First Create Modal Class

        public class FilterBean {

         String filter_catagory;
                 boolean isSelected;

            public boolean isSelected() {
                return isSelected;
            }

            public void setSelected(boolean selected) {
                isSelected = selected;
            }

          public String getFilter_catagory() {
                return filter_catagory;
            }

            public void setFilter_catagory(String filter_catagory) {
                this.filter_catagory = filter_catagory;
            }

        }


    In Adapter Class

    @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            convertView = layoutInflater.inflate(R.layout.size_name_indicator, null);
            txt = (TextView) convertView.findViewById(R.id.key_textView);
            txt.setText(getItem(position).getFilter_catagory());

            if(getItem(position).isSelected()){
                txt.setBackgroundColor(context.getResources().getColor(R.color.transparent));
            }else {

                txt.setBackgroundColor(context.getResources().getColor(R.color.colorWhite));
            }


            return convertView;
        }

     public void updateNameBean(String key,boolean checked)
        {

            for(int i=0;i<getCount();i++)
            {
                FilterBean filterBean =  getItem(i);
                if(filterBean.getFilter_catagory().equals(key))
                {
                    filterBean.setSelected(checked);
                }else {
                    filterBean.setSelected(false);
                }
            }
            notifyDataSetChanged();
        }

In Filter Activity or Fragment

 filter_listView.setAdapter(filterNameAdapter);
               filterNameAdapter.updateNameBean(filterNameAdapter.getItem(0).getFilter_catagory(),true);
        filter_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                String key = filterNameAdapter.getItem(position).getFilter_catagory();
                filterNameAdapter.updateNameBean(filterNameAdapter.getItem(position).getFilter_catagory(),true);

            }
        }); 
0 голосов
/ 03 апреля 2014

Вы можете исправить это следующим образом.

//set list adapter, then
lv.setItemChecked(1, true);//position 1
lv.setSelection(1);//position 1

Обновить макет XML с одним выбором.

<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"  
    android:background="@drawable/list_item_background"
    android:cacheColorHint="#FFFFFF"
    android:choiceMode="singleChoice"
    android:dividerHeight="1dip" >
</ListView>

и установить фоновый XML-вид списка в виде list_item_background.xml,

<?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/bg_list_default"   android:state_activated="false"/>
     <item android:drawable="@drawable/bg_list_pressed" android:state_pressed="true"/>
     <item android:drawable="@drawable/bg_list_pressed" android:state_activated="true"/>

0 голосов
/ 13 января 2014

Это работает, если вы хотите щелкнуть по нему, чтобы выполнить дополнительную обработку событий:

listView.getAdapter().getView(position, null, null).performClick();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...