My ListView is inside PopupWindow.
When i shown PopupWindow and click on Listview row in device ASUS K00z fonepad worke very well.
But in HTC Z715e is not working (onitem click event not fired)
1.This is my listview item layout
<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.This is my popup layout
<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.This is my adapter
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.This is code i use to create and show 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);
}
});
How to solve it's
EDIT i can solve my problem.
replace
this.testpopup = new PopupWindow(actionview, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
with
this.testpopup = new PopupWindow(actionview, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
sorry for waste time i'm very stupid.
You can make context menu instead of popup menu it work same like this . For creating context menu just refer this link:
http://developer.android.com/guide/topics/ui/menus.html#context-menu
In this link refer to Creating Contextual Menus
.
Sort exanple on this like this u can add context menu ------ first register it in onclicklistener like
registerForContextMenu(view)
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));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With