Как сделать первый элемент ListView выбранным по умолчанию при запуске?

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

12 ответов


вы можете сделать это

yourListView.setSelection(0);
yourListView.getSelectedView().setSelected(true);

Я надеюсь, что это поможет вам


yourlist.setItemChecked(position,true)

эта работа для меня. Надеюсь, это вам поможет. :)

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {

    // do someting...
    if(position == 0){
        mListView.performItemClick(convertView, 0, 0);
    }

 }

теперь я нашел еще один хороший способ реализовать это.

  • во-первых,вы должны установить ListView с android: choiceMode=singleChoice
  • во-вторых,просто идти вперед, как следует,

        int defaultPositon = 0;
        int justIgnoreId = 0;
        mListView.setItemChecked(defaultPositon, true);
        mListView.performItemClick(mListView.getSelectedView(), defaultPositon, justIgnoreId);
    

Я думаю, что это будет работать, поскольку мы дали 0 индекс массива listView

ListView.setSelection(0);

//put the below code in get view function 
if(position==0)
{
    convertView.setSelected(true); 
}

создать onItemClickListener затем используйте этот фрагмент, заполнив соответствующие значения:

listView.performItemClick(View view, int position, long id);

посмотреть документы для более подробной информации.


можно назвать listview.setSelection(0);. Просто убедитесь, что вы звоните после poplulating ваш List. Если вы называете его перед заполнением вашего List он не будет работать, потому что в это время у него не будет никаких данных.


ниже Решение работает для меня:

установка фона / Id вида на get View & с помощью setOnItemClickListener представления списка

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater)
                ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.listitems, null);
    }
    ListItem m = items.get(position);

    if (m != null) {

        TextView txt = (TextView)v.findViewById(R.id.textView);
        txt.setText(m.Item);

    }

    // set selected item
    LinearLayout ActiveItem = (LinearLayout) v;
    v.setId(position);
    if (position == GetDeviceDetails.selectedsize)
    {
        ActiveItem.setBackgroundColor(0xFF7F8184);
    }
    return v;
}

в деятельности по созданию:

listView1.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
                    adapter.findViewById(GetDeviceDetails.selectedsize).setBackgroundColor(0xFFFFFFF);
                    GetDeviceDetails.selectedsize = position;
                    adapter.findViewById(position).setBackgroundColor(0xFF7F8184);
                    Log.d("Selected Id", "" + v.getId());
                    Log.d("find Selected Id", "" + adapter.findViewById(0));
                }
            });
    listView1.setSelection(0);
    listView1.setItemChecked(0, true);

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

listView.getAdapter().getView(position, null, null).performClick();

вы можете исправить это.

//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>

и установить 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"/>


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

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

            }
        }); 

if(position == 0){
        // This is the first item, you need to select this
        //rowview which u inflate under getview 
        rowView.performClick();

    }

Я думаю, это поможет вам . это работает для меня