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

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

Ответы [ 13 ]

10 голосов
/ 26 марта 2013
yourlist.setItemChecked(position,true)
6 голосов
/ 06 марта 2012

Вы можете сделать это с помощью

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

Надеюсь, это поможет вам

4 голосов
/ 01 августа 2014

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

 @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);
    
2 голосов
/ 06 марта 2012

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

ListView.setSelection(0);
2 голосов
/ 06 марта 2012
//put the below code in get view function 
if(position==0)
{
    convertView.setSelected(true); 
}
1 голос
/ 28 июня 2015

Ниже у меня работает решение:

Настройка фона / Просмотр идентификатора при получении Просмотр и использование 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 голос
/ 06 марта 2012

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

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

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

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

Подробнее см. В документах .

0 голосов
/ 19 февраля 2019

Я использовал привязку данных для решения этой проблемы,

, используя следующий код:

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 голосов
/ 28 ноября 2017
if(position == 0){
        // This is the first item, you need to select this
        //rowview which u inflate under getview 
        rowView.performClick();

    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...