web-dev-qa-db-ja.com

ListViewの最初のアイテムを起動時にデフォルトとして選択するにはどうすればよいですか?

私のアプリにはListViewがあり、ListViewにはセレクターがあります。このListViewの最初のアイテムを選択させたいデフォルトとしてまさにアプリの起動、どうやって?誰かがいくつかのヒントを与えることができますか? THXたくさん。

11
acoustic

あなたはこれを行うことができます

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

これがお役に立てば幸いです

6
Chirag Patel
yourlist.setItemChecked(position,true)
11
Jachu

これは私にとってはうまくいきます。これがお役に立てば幸いです。 :)

 @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);
    
4
Folyd

ListViewに配列のインデックスを0に指定したので、これは機能すると思います

ListView.setSelection(0);
2
Sanket Pandya
//put the below code in get view function 
if(position==0)
{
    convertView.setSelected(true); 
}
2
Pradeep Sodhi

以下の解決策は私のために働きます:

ビューの取得時に背景/ビューIDを設定し、リストビューの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);
1
Murali

onItemClickListenerを作成してから、このスニペットを使用して、適切な値を入力します。

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

ドキュメントを参照 詳細については。

1
koopaking3

listview.setSelection(0);を呼び出すことができます。 Listにデータを入力した後、これを呼び出していることを確認してください。 Listにデータを入力する前に呼び出すと、その時点ではデータがないため、機能しません。

1
Lalit Poptani

このように修正できます。

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

これは、クリックして追加のイベント処理を実行する場合に機能します。

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

これは私のために働きます。カスタムアダプタを作成する必要があります。

     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
V.Soni

私はこれを解決するためにデータバインディングを使用しました、

次のコードビハインドを使用します。

private List<Unit> _units;
private Unit _selectedUnit;
public Unit selectedUnit{
  get{
    if (_selectedUnit is null){
      return _units.Count > 0 ? _units[0] : null;
    }else{
      return _selectedUnit;
    }
  }
  set{
    if (_selectedUnit != value){
      _selectedUnit = value;
      OnPropertyChanged("selectedUnit");
    }
  }
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName){
  var changed = PropertyChanged;
  if (changed != null){
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  }
}

およびXAML

<ListView ItemsSource="{Binding units}"
          SelectedItem="{Binding selectedUnit, Mode=TwoWay}">
0
Tomáš Repík