C'è una ListView nella mia app e ListView ha un selettore. Voglio rendere il primo elemento di questo ListView da selezionare come predefinito all'avvio proprio dell'App, Come? Qualcuno può dare qualche consiglio? Grazie mille.Come rendere il primo elemento di un ListView da selezionare come predefinito all'avvio?
risposta
È possibile farlo
yourListView.setSelection(0);
yourListView.getSelectedView().setSelected(true);
Spero che questo vi aiuterà a
Creare un onItemClickListener
quindi utilizzare questo frammento, compilando i valori appropriati:
listView.performItemClick(View view, int position, long id);
See the docs per ulteriori dettaglio.
ho provato, non funziona ... – acoustic
Forse dovresti fornire del codice nella tua domanda per mostrarci come lo stai provando. – koopaking3
//put the below code in get view function
if(position==0)
{
convertView.setSelected(true);
}
È possibile chiamare listview.setSelection(0);
. Assicurati solo di chiamarlo dopo aver popolato il tuo List
. Se lo chiami prima di compilare il tuo List
non funzionerà, perché non avrà alcun dato in quel momento.
Penso che la tua risposta sia adatta e utile, ma non funziona quando la inserisco nel mio codice in cui penso che la lista sia stata popolata. Forse c'è qualcosa di sbagliato nell'altro posto del codice ...... – acoustic
sii meglio se puoi pubblicare il codice su come lo stai scrivendo. –
@LalitPoptani puoi aiutarmi in questo http://stackoverflow.com/questions/18099756/default-selection-of-a-row-in-the-listview-and-highlight-the-slected-row-android/18099844 ? noredirect = 1 # comment26498081_18099844 – Developer
penso che questo funzionerà come abbiamo dato 0 indice della matrice per listView
ListView.setSelection(0);
Questo non funziona –
yourlist.setItemChecked(position,true)
Questo funziona se si vuole clic su di esso per ottenere evento aggiuntivo manipolazione fatto:
listView.getAdapter().getView(position, null, null).performClick();
Puoi sistemarlo in questo modo.
//set list adapter, then
lv.setItemChecked(1, true);//position 1
lv.setSelection(1);//position 1
Aggiornamento layout XML con scelta singola.
<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>
e impostare sfondo XML ListView come 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"/>
questo lavoro per me. Spero che questo ti possa aiutare. :)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// do someting...
if(position == 0){
mListView.performItemClick(convertView, 0, 0);
}
}
ora ho trovato un altro buon modo per implementare questo.
- In primo luogo, è necessario impostare ListView Android: choiceMode = singleChoice
In secondo luogo, basta andare avanti come seguire,
int defaultPositon = 0; int justIgnoreId = 0; mListView.setItemChecked(defaultPositon, true); mListView.performItemClick(mListView.getSelectedView(), defaultPositon, justIgnoreId);
Questo funziona. Un problema risolto, ora il prossimo: l'elemento selezionato non viene evidenziato. WTF Android! –
Sotto soluzione funziona per me:
Impostazione sfondo/Visualizza ID per ottenere Visualizza & utilizzando setOnItemClickL istener della lista Visualizza
@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;
}
Nella attività su Crea:
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);
questo funziona per ME.You devono fare adattatore personalizzato.
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();
}
Credo che questo vi aiuterà. funziona per me
Giù vota per non fornire alcuni snippet per aiutarti, senza guardare nel tuo codice SO non riesci a indovinare dove sei bloccato. –
Vedere anche per un esempio completo: http://stackoverflow.com/questions/30409421/listview-list-item-selection-and-initial-setting-custom-made-items – tjm1706