问题描述
- Android的ListView如何实现长点击后出现隐藏的按钮按钮
-
我现在有个小程序,功能实现为打电话。现在已经获取了联系人列表,联系人列表放在ListView中,使用了BaseAdapter。我现在想实现这样的一个功能,长按ListView里一个联系人Item,然后此Item右边出现拨打电话的按钮,如果按钮出现几秒后用户还不点击,按钮则隐藏。目前我BaseAdapter里getView方法是这样写的@Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout ll=null; if (convertView!=null) { ll=(LinearLayout)convertView; }else{ ll=(LinearLayout) LayoutInflater.from(context).inflate(R.layout.call_name_num, null); } TextView userName=(TextView) ll.findViewById(R.id.textName); TextView userNumber=(TextView) ll.findViewById(R.id.textNumber); Button callBtn =(Button)ll.findViewById(R.id.btnCall); callBtn.setVisibility(1); callBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(">>>>>CallBtn Click"); } }); userName.setText(phoneUserList.get(position).getName()); userNumber.setText(phoneUserList.get(position).getNumber()); return ll; }
现在就没思路了,而且我这样写有个问题,添加一个可点击的按钮后,ListView里的联系人就无法点击了,长摁联系人Item也没有反应,这是怎么回事?求大神
解决方案
ListView中item中有按钮,就会使item无法获得焦点,无法响应点击事件。
你试试Button的xml中定义 android:focusable="false"
解决方案二:
你可以在接下来的代码中点用handler.postDelayed(a.b).b就是延长时间。
解决方案三:
长点击后出现隐藏的按钮按钮:可以试试PopupWindow。把隐藏按钮放到PopupWindow中。长按后弹出PopupWindow,过几秒后消失。
这样你的item和button不会冲突了。
解决方案四:
button截获了焦点,可以把button的焦点设为false,或者用textview代替;长按后显示该条的拨号按钮,可以在adapter中添加一标志(比如position),在getview中设置如果等于position就显示反之不显示,长按后设置长按的位置,最后更新adapter。ok!
解决方案五:
在item的根布局中添加android:descendantFocusability=“blocksDescendants"这个属性试试。
解决方案六:
你这种可以 改为 listview.setonitemlongclicklistener 然后弹框提示是否拨打电话
解决方案七:
listview.setonitemlongclicklistener 长按监听
解决方案八:
如果item里有button,那么listview的onItemClickListener就不能用了
解决方案九:
Android ListView 按钮点击分页显示
Android ListView 按钮点击分页显示