2015-12-11 10 views
11

Ich habe ein Popup auf meiner Seite, die eine Listview hat. Ich habe das Design von Popup in einem separaten XML erstellt und lade es auf einen Klick auf meiner Hauptseite. Das Popup hat eine Listenansicht, in der jede Zeile ein Bild und eine Textansicht enthält. Ich bin nicht in der Lage, Zeilenauswahl in ListView in Android 4.1, aber es funktioniert in 5.0. Kann mir bitte jemand die Lösung vorschlagen? Listenansicht:nicht möglich, Zeile in ListView in einem Popup in 4.1 auswählen, aber 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"/> 

Hinzufügen Zeile klicken 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

jeder Fehler in logcat?Wenn du sagst, dass die Zeile ausgewählt ist, bedeutet das, dass onItemClick nicht funktioniert oder du keine Position erhältst? – virendrao

+1

Entfernen Sie diese 'android: demcendantFocusability =" blocksDescendants "' aus 'ListView'. – Piyush

Antwort

0

Sie müssen android:descendantFocusability="blocksDescendants" von Ihrem ListView entfernen.

Entfernen Sie auch android:focusable="false" und android:focusableInTouchMode="false" aus dem Reihenlayout im ImageView und die TextView.

Der Listenpunkt soll anklickbar sein, da ist es Fokus

1

entfernen Sie dieses Angebot von Listview, android:descendantFocusability="blocksDescendants" und

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

von Text und Bildansicht zu erhalten deaktivieren.

Und versuchen Dieses Beispiel Beispiel ist,

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

sonst Code ist in Ordnung. Es klappt.

gehen Sie durch diese link für weitere Details.

Weitere official link für das gleiche.

+0

hast du das versucht? @ pankaj –

1

Versuchen Sie, alle Lösungen:


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

nicht verwenden lstSiteMenu.setOnItemClickListener
anstatt zu Ihrem Adapter gehen getView und fügen

convertView.setOnClickListener 

Hoffe es wird dir helfen!

-1

Set Reihe Onclick Hörer in Adapterklasse

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

Dieser Code funktioniert in allen Versionen sdk.

Entfernen Sie auch diese Eigenschaften von XML-Dateien

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