2 qq 30130435 qq_30130435 于 2016.03.26 22:24 提问

Android的ListView如何实现长点击后出现隐藏的按钮按钮 10C

我现在有个小程序,功能实现为打电话。现在已经获取了联系人列表,联系人列表放在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也没有反应,这是怎么回事?求大神

9个回答

fengyun703
fengyun703   2016.03.26 22:55

ListView中item中有按钮,就会使item无法获得焦点,无法响应点击事件。
你试试Button的xml中定义 android:focusable="false"

qq_30130435
qq_30130435 感谢!点击问题已解决!
2 年多之前 回复
wuzhiqiang_
wuzhiqiang_   2016.03.26 23:06

你可以在接下来的代码中点用handler.postDelayed(a.b).b就是延长时间。

qq_30130435
qq_30130435 感谢回复!我代码里callBtn.setvisibility方法并没有起作用,不知又为何
2 年多之前 回复
fengyun703
fengyun703   2016.03.26 23:09

长点击后出现隐藏的按钮按钮:可以试试PopupWindow。把隐藏按钮放到PopupWindow中。长按后弹出PopupWindow,过几秒后消失。
这样你的item和button不会冲突了。

qq_30130435
qq_30130435 谢谢建议!新手,我先了解如何使用
2 年多之前 回复
u013112846
u013112846   2016.03.26 23:12

button截获了焦点,可以把button的焦点设为false,或者用textview代替;长按后显示该条的拨号按钮,可以在adapter中添加一标志(比如position),在getview中设置如果等于position就显示反之不显示,长按后设置长按的位置,最后更新adapter。ok!

u013112846
u013112846 在adapter中定义一个int变量,长按的时候把position值赋值给定义的int变量
2 年多之前 回复
qq_30130435
qq_30130435 感谢回复!请问那标志是什么,如何写?
2 年多之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.03.26 23:19

在item的根布局中添加android:descendantFocusability=“blocksDescendants"这个属性试试。

qq_30130435
qq_30130435 谢谢建议!已解决
2 年多之前 回复
lxk_1993
lxk_1993   Rxr 2016.03.28 08:36

你这种可以 改为 listview.setonitemlongclicklistener 然后弹框提示是否拨打电话

cyxevil
cyxevil   2016.03.28 11:13

listview.setonitemlongclicklistener 长按监听

dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.03.28 14:06

如果item里有button,那么listview的onItemClickListener就不能用了

CSDNXIAON
CSDNXIAON   2016.03.30 11:26

Android ListView 按钮点击分页显示
Android ListView 按钮点击分页显示
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android 点击按钮实现控件显示隐藏
我写了一个自定义的listview,listview 每一列点击切换图标 同时显示 隐藏的布局,再次点击则隐藏该布局。以下是判断的代码: holder.isShowlin.setOnClickListener(new View.OnClickListener() { @SuppressWarnings("deprecation") @Override public void
android(2)在listView中设置长按显示button,实现删除item
之前写的第一个代码,只是实现了使用baseadapter 适配器显示listview,但是,在其中的一个button,并没有加上实质性的内容。现在,我们要为这个listview中的button设置长按显示button,并且点击之后能够删除这个item。(以后看见这些的时候,记得,你写这个玩意很辛苦) 1.首先,修改xml文件,将button的属性设置为不可见。代码如下: <Button
Android View深入学习——实现QQ滑动显示隐藏按钮ListView
学Android也有一段时间了,一直都是用开源的控件,没有自己写过自定义的控件。最近在复习View的一些知识,感觉还是上手写点代码比较实在。在写自定义View之前大概要了解以下知识 View的测量,布局与绘制View的事件处理View的滑动实现滑动冲突的解决      只是了解点理论知识是不够的,必须亲手写个控件才有感觉。为了能够将View的这些理论知识都用上,我决定写一个能够滑动显示
ListView中实现互斥按钮(每个Item中有两个button,永远只有一个item中的一个按钮被选中)
package com.mayunpeng.chenckbutton;import java.util.HashMap;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnC
Android 点击按钮弹出ListView对话框
在主Activity中 public class ZHGLActivity extends AppCompatActivity { private List list = new ArrayList(); private AlertDialog.Builder builder; private AlertDialog alertDialog; @Override protected
Android中点击按钮后隐藏输入法
在Android中登录界面、发表回复、评论的时候,常常有这样的需求:当点击登录,评论后,需要隐藏输入法。如下图所示: 实现方式://将输入法隐藏,mPasswordEditText 代表密码输入框 InputMethodManager imm =(InputMethodManager)getSystemService( Context.INPUT_METHO
点击刷新按钮实现listview的数据刷新
本功能因为,没有从第三方获取到信息,所以,本章就是用了插入固定数据,使用了javabean的技术来实现插入固定的数据,再通过adapter将数据插入到listview中,最后使用thread和handler来控制,按钮停止运动 public void initAdapter(){ HomeMsgBean homeMsgBean_1=new HomeMsgBean("壬戌之
Android 使用NineOldAndroids实现仿微信listview左滑出现删除itembutton
这是一个使用NineOldAndroids实现仿微信listview左滑出现删除itembutton效果。使用的是Jake Wharton的动画开源库NineOldAndroids。在API3.0(Honeycomb), SDK新增了一个android.animation包,里面的类是实现动画效果相关的类,通过Honeycomb API,能够实现非常复杂的动画效果,但是如果开发者想在3.0以下使用这一套API, 则需要使用开源框架Nine Old Androids,在这个库中会根据我们运行的机器判断其SDK
点击按钮弹出ListView并作出相应
做的一个点击布局按钮弹框显示ListView列表的小demo,初次分享,还请多指教
android 关于在ListView 显示和隐藏checkboxes的实现。
需求:用ListView显示所有邮件信息,点击菜单按钮,进入编辑模式,各个item出现车乘客checkbox,选择后,点击删除按钮,删掉相应item. 问题描述:在继承BaseAdapter的getView方法中是用bindle,在是调用的时候,bindle.checkbox.setVisible();失效,部分item的checkbox不出现,和打勾后出现错位的现象。 解决方法:是用set记