Android Listview en PopupWindow onitemclick no funciona en algún dispositivo

Mi ListView está dentro de PopupWindow.

Cuando me mostró PopupWindow y haga clic en Listview fila en el dispositivo ASUS K00z fonepad worke muy bien.

Pero en HTC Z715e no funciona (onitem clic evento no disparado)

1.This es mi disposición del artículo del listview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ln_testpopitemcon" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="52dp" android:background="#3b8ed4" android:descendantFocusability="blocksDescendants"> <ImageView android:id="@+id/img_testiconmenu" android:layout_margin="10dp" android:layout_width="32dp" android:layout_height="32dp" android:src="@drawable/radio_selected" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"/> <TextView android:id="@+id/tv_testtitlemenu" android:gravity="left|center_vertical" android:layout_width="wrap_content" android:layout_height="match_parent" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"/> </LinearLayout> 

2.Este es mi diseño emergente

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ln_testpopocontainer" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:paddingLeft="2dp" android:paddingRight="2dp" android:paddingBottom="2dp" android:id="@+id/lv_testpop" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:dividerHeight="2dp" android:background="#00000000" android:orientation="vertical"/> </LinearLayout> 

3.Este es mi adaptador

 public class testmenuadapter extends BaseAdapter{ private Context context; private ArrayList<MenuInfo> MenuList; private LayoutInflater Layf; public testmenuadapter(Context context, ArrayList<MenuInfo> menuList){ this.context = context; this.MenuList = menuList; this.Layf = LayoutInflater.from(context); } @Override public int getCount() { return MenuList.size(); } @Override public Object getItem(int position) { return MenuList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = Layf.inflate(R.layout.testpopoitem, null); holder.img_testiconmenu = (ImageView)convertView.findViewById(R.id.img_testiconmenu); holder.tv_testtitlemenu = (TextView)convertView.findViewById(R.id.tv_testtitlemenu); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } MenuInfo info = MenuList.get(position); if(info != null) { if (holder.tv_testtitlemenu != null) { holder.tv_testtitlemenu.setText(info.getTitle()); } } return convertView; } public class ViewHolder { ImageView img_testiconmenu; TextView tv_testtitlemenu; } } 

4.Este es el código que uso para crear y mostrar popup

 final View actionview = inflater.inflate(R.layout.testpopo, (ViewGroup)getActivity().findViewById(R.id.ln_testpopocontainer)); this.testpopup = new PopupWindow(actionview, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); this.testpopup.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); this.testpopup.setOutsideTouchable(false); this.testpopup.setAnimationStyle(R.style.Animation); this.testpopuplistview = (ListView)this.testpopup.getContentView().findViewById(R.id.lv_testpop); this.testmenupopup = new ArrayList<MenuInfo>(); this.testmenupopup.add(new MenuInfo("aaa", "AAA", 0, 0, false)); this.testmenupopup.add(new MenuInfo("bbb", "BBB", 0, 0, false)); this.testmenupopup.add(new MenuInfo("ccc", "CCC", 0, 0, false)); this.testpopadapter = new testmenuadapter(getActivity(), this.testmenupopup); this.testpopuplistview.setAdapter(this.testpopadapter); this.testpopuplistview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { Toast.makeText(getActivity(), ((MenuInfo)adapterView.getItemAtPosition(position)).getTitle(), Toast.LENGTH_LONG).show(); } }); Button btnshowpop = (Button)findViewById(R.id.btn_showpop); btnshowpop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { testpopup.showAtLocation(rootView, Gravity.CENTER, 0, 0); } }); 

Cómo solucionarlo es

EDIT puedo resolver mi problema.

reemplazar

 this.testpopup = new PopupWindow(actionview, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

con

 this.testpopup = new PopupWindow(actionview, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); 

Lo siento por perder el tiempo soy muy estúpido.

Puede hacer que el menú contextual en lugar de menú emergente funcione igual como este. Para crear un menú contextual, solo tiene que consultar este enlace:

http://developer.android.com/guide/topics/ui/menus.html#context-menu

En este enlace, consulte Creating Contextual Menus .

Ordenar exanple en esto como este u puede agregar menú contextual —— primero registrarlo en onclicklistener como

RegisterForContextMenu (ver)

 for oncreate @Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { menu.add(Menu.NONE, CONTEXT_MENU_UNPAIR_ITEM, Menu.NONE, "UNPAIR"); menu.add(Menu.NONE, DEFAULT_DEVICE, Menu.NONE, "USE AS CGM DEVICE"); } For item selected in context menu @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case CONTEXT_MENU_UNPAIR_ITEM: //whatever u want break case DEFAULT_DEVICE: //whatever your logic accordind to u return(true); } return(super.onOptionsItemSelected(item)); } 

Es posible que desee utilizar ListAdapter en lugar de BaseAdapter para un ListView y devolver True para areAllItemsEnabled y isItemEnabled en la clase que implementa ListAdapter.

Algo como esto…

 class CustomListAdapter implements ListAdapter { Activity callingActivity; ArrayList<String> items; public CustomListAdapter(Activity act, ArrayList<String> list) { callingActivity = act; items = list; } @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return 0; } @Override public boolean hasStableIds() { return false; } @Override public View getView(int position, View convertView, ViewGroup parent) { AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT); LinearLayout ll = new LinearLayout(callingActivity); ll.setLayoutParams(params); ll.setGravity(Gravity.CENTER); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setPadding(5, 5, 5, 5); // // Code for your list item here... // return ll; } @Override public int getItemViewType(int position) { return 0; } @Override public int getViewTypeCount() { return 1; } @Override public boolean isEmpty() { return false; } @Override public boolean areAllItemsEnabled() { return true; } @Override public boolean isEnabled(int position) { return true; } } 

Buena suerte. 🙂

  • OnItemClickListener no funciona correctamente cuando el adaptador contiene un botón con onClickListener
  • Crear intención dentro del listview del evento setOnItemClickListener
  • ListView con TextView autoLink no recibe OnItemClickListener
  • OnItemClickListener no funciona, pero OnItemLongClickListener está trabajando en GridView
  • Setvisibility (view.visible) no funciona después de setvisibility (view.gone)
  • ¿Cómo obtener el recuento de filas en sqlite usando Android?
  • ¿Cuál es la diferencia entre argumento "int" y "long" en onItemClick en Android
  • El clic de Listitem no funciona con las casillas de verificación Android
  • Vista de la cuadrícula con el gesto y en el oyente del tecleo del artículo
  • Ignore OnItemSelectedListener encendiendo en crear
  • Android: la posición de onItemClick () es relativa al área visible, no toda la lista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.