2015-12-11 23 views
11

Ho un popup nella mia pagina che ha un listview. Ho creato il design del popup in un xml separato e caricandolo su qualche clic del tasto nella mia pagina principale. Il popup ha un listview con ogni riga con un'immagine e una textview. Non riesco a ottenere la selezione riga in listview in Android 4.1 ma funziona in 5.0. Qualcuno può suggerirmi la soluzione? Listview:impossibile selezionare la riga in listview in un popup in 4.1 ma funziona in Android 5.0

<ListView android:id="@+id/lstSites" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fastScrollEnabled="true" 
     android:layout_margin="5dp" 
     android:descendantFocusability="blocksDescendants"></ListView> 
</LinearLayout> 

Listview Item:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false"> 
<ImageView 
    android:id="@+id/thumbImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginRight="10dp" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 
<TextView 
    android:id="@+id/tvSite" 
    android:textSize="20dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:text="Name" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 

aggiungendo fila click listner:

lstSiteMenu = (ListView) popupView.findViewById(R.id.lstSites); 

      adapter = new MenuItemsAdapter(SiteActivity.this, arrMenu); 
      // Attach the adapter to a ListView 
      lstSiteMenu.setAdapter(adapter); 
      lstSiteMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
             final int position, long id) { 
      } 
+0

qualsiasi errore nel logcat?quando dici la riga selezionata hai voluto dire che l'oggetto non funziona o che non ottieni la posizione? – virendrao

+1

Rimuovi 'android: descendantFocusability =" blocksDescendants "' da 'ListView'. – Piyush

risposta

0

è necessario rimuovere android:descendantFocusability="blocksDescendants" dal ListView.

rimuovere anche android:focusable="false" e android:focusableInTouchMode="false" dal layout riga della ImageView e TextView.

la voce di elenco si doveva essere cliccabile, c'è disabilitarlo ottenere attenzione

1

rimuovere questo immobile dal listview, android:descendantFocusability="blocksDescendants" e

android:focusable="false" 
android:focusableInTouchMode="false" 

dal testo e ImageView.

e provare questo è l'esempio del campione,

String names[] ={"A","B","C","D"}; 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); 
     LayoutInflater inflater = getLayoutInflater(); 
     View convertView = (View) inflater.inflate(R.layout.row_file, null); 
     alertDialog.setView(convertView); 
     alertDialog.setTitle("List"); 
     ListView lv = (ListView) convertView.findViewById(R.id.listView); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names); 
     lv.setAdapter(adapter); 
     alertDialog.show(); 

altrimenti il ​​codice va bene. Funziona.

passare attraverso questo link per ulteriori dettagli.

Un altro official link per lo stesso.

+0

hai provato questo? @pankaj –

1

Prova tutte le soluzioni:


popupwindow.setFocusale(true); 
listView xml : "android:focusable="true" 

non utilizzare lstSiteMenu.setOnItemClickListener
invece andare ai vostri adattatori getView e aggiungere

convertView.setOnClickListener 

Spero che ti possa aiutare!

-1

Set fila ascoltatore onclick in classe adattatore

public class MenuItemsAdapter extends Base Adapter{ 
     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      /* 
          Paste your adapter code 
      */ 
       customView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.v("log", "You clicked at pos "+position); 
       } 
      }); 
     } 
} 

Questo codice ha funzionato in tutte le versioni SDK.

rimuovere anche questi oggetti di file XML

android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false" 
Problemi correlati