qq_30130435
浅水咸鱼
采纳率72.7%
2016-03-26 14:24 阅读 2.1k

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

10

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • fengyun703 有雄心的小菜鸟 2016-03-26 14:55

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

    点赞 评论 复制链接分享
  • wuzhiqiang_ white_or_black 2016-03-26 15:06

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

    点赞 评论 复制链接分享
  • fengyun703 有雄心的小菜鸟 2016-03-26 15:09

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

    点赞 评论 复制链接分享
  • u013112846 平行线_badede 2016-03-26 15:12

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

    点赞 评论 复制链接分享
  • luochoudan 丑旦 2016-03-26 15:19

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

    点赞 评论 复制链接分享
  • lxk_1993 103style 2016-03-28 00:36

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

    点赞 评论 复制链接分享
  • cyxevil cyxevil 2016-03-28 03:13

    listview.setonitemlongclicklistener 长按监听

    点赞 评论 复制链接分享
  • dongfeng9ge 东风玖哥 2016-03-28 06:06

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

    点赞 评论 复制链接分享

相关推荐