2012-03-06 12 views
9

Istnieje ListView w mojej aplikacji i ListView ma selektor. Chcę, aby pierwsza pozycja tego ListView została wybrana jako jako domyślna na samym uruchomieniu uruchamiania aplikacji, w jaki sposób? Czy ktoś może dać wskazówki? Wielkie dzięki.Jak ustawić pierwszy element ListView jako domyślny przy uruchomieniu?

+0

Głosowanie w dół za nie dostarczanie jakiegoś fragmentu, który ci pomoże, Bez zaglądania w twój kod, SO nie może odgadnąć, gdzie tkwisz. –

+0

Zobacz także pełny przykład: http://stackoverflow.com/questions/30409421/listview-list-item-selection-and-initial-setting-custom-made-items – tjm1706

Odpowiedz

6

Można to zrobić przez

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

Mam nadzieję, że to pomoże Ci

+7

To nie działa ... – acoustic

+0

puszka pokazujesz swój kod, abyśmy mogli być bliżej ... –

+0

@ChiragPatel pomoże mi w rozwiązaniu tego problemu http://stackoverflow.com/questions/18099756/default-selection-of-a-row-in- the-listview-and-highlist-the-seled-row-android – Developer

1

Utwórz onItemClickListener następnie użyć tego fragmentu, wypełniając odpowiednie wartości:

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

See the docs dla dalszego Szczegół.

+0

Próbowałem, to nie działa ... – acoustic

+0

Może powinieneś podać kod w tobie pytanie, aby pokazać nam, jak próbujesz to zrobić. – koopaking3

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

Możesz zadzwonić pod numer listview.setSelection(0);. Po prostu upewnij się, że wywołujesz to po przesłaniu swojego List. Jeśli zadzwonisz przed zapełnianiem swojego List, to nie zadziała, ponieważ nie będzie miał żadnych danych w tym czasie.

+0

Myślę, że twoja odpowiedź jest odpowiednia i pomocna, ale nie działa, gdy umieściłem ją w moim kodzie, gdzie w myślach lista została zapełniona. Może coś złego w innym miejscu kodu ...... – acoustic

+0

To by być lepszym, jeśli możesz napisać kod, jak go piszesz. –

+0

@LalitPoptani możesz mi pomóc w tym http://stackoverflow.com/questions/18099756/default-selection-of-a--w-viewview-and-highlight-selected-row-android/18099844 ? noredirect = 1 # comment26498081_18099844 – Developer

2

myślę, że to będzie działać jak daliśmy 0 indeks tablicy do ListView

ListView.setSelection(0); 
+0

To nie działa –

10
yourlist.setItemChecked(position,true) 
0

To działa, jeśli chcesz kliknij go, aby uzyskać dodatkowe obsługi zdarzeń zrobione:

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

Możesz to naprawić w ten sposób.

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

Uaktualnij układ XML za pomocą jednego wyboru.

<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 i ustawić jako tło 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"/> 

4

To praca dla mnie. Mam nadzieję, że to Ci pomoże. :)

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

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

} 

teraz znalazłem inny dobry sposób realizacji tego.

  • Po pierwsze, należy ustawić ListView androida: choiceMode = singleChoice
  • drugie, tylko iść do przodu, jak postępować,

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

To działa. Jeden problem rozwiązany, teraz następny: zaznaczony element nie jest podświetlany. WTF Android! –

0

Poniżej rozwiązanie działa dla mnie:

Ustawianie tła/Wyświetl identyfikator przy pobieraniu Wyświetl & przy użyciu metody setOnItemClickL istener Listy Zobacz

@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; 
} 

W działalności na tworzenie:

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

Działa to dla ME.You musiał dokonać niestandardowego adaptera.

 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
if(position == 0){ 
     // This is the first item, you need to select this 
     //rowview which u inflate under getview 
     rowView.performClick(); 

    } 

myślę, że to pomoże. to działa dla mnie

Powiązane problemy