【问题标题】:how to set visibility of a button on long press in an array adapter如何在阵列适配器中长按时设置按钮的可见性
【发布时间】:2012-08-27 06:39:58
【问题描述】:

我已在布局中将按钮设置为不可见,现在我需要将其设置为在长按列表项时可见..

我创建了一个扩展数组适配器的类,我在这个类中声明了按钮.. 现在我需要在代码中访问此按钮以长按列表项以将其设置为可见.. 我如何在setOnItemLongClickListener.. 中访问此按钮。

当在 arrayadapter 中声明按钮时,应用程序强制关闭。

这是我的代码..

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)         {
 //arg1.findViewById(R.id.btndelete).setVisibility(View.VISIBLE);

    Toast.makeText(getApplicationContext(), "long press", Toast.LENGTH_LONG).show();
    return false;
    }
});


 class myAdapter extends ArrayAdapter<String>
    {
           Button btndlt;
           View row;
           public myAdapter(Context context,ArrayList<String> objects)
           {
                super(context, android.R.layout.simple_list_item_1, objects);          
           }

            public View getView(final int position, View convertView, ViewGroup parent)
            {
                LayoutInflater inflater=getLayoutInflater();
                row = inflater.inflate(R.layout.list_item, parent, false);

                btndlt = (Button) row.findViewById(R.id.btndelete);
            }
}    

【问题讨论】:

  • 尝试在适配器类中设置视图的onitemlongclickListener。并且,使那里的可见性。我不确定,这是否正确。
  • 我想你得到了答案here
  • @Abhi:不,我没有得到答案..

标签: android android-arrayadapter long-press


【解决方案1】:

如果您在 ListItem 行中有一个按钮,那么您可以使用 setTag()getTag()onItemLongClick() 中获取 Button 的实例,

Pusedo 代码,

getView()内,

convertView.setTag(R.id.button, button);

onItemLongClick()

Button button = (Button)view.getTag(R.id.button);

另外,如果您想检测 ListItem 上的滑动,您可以查看我的演示示例 here,它在 ListItem 从右向左滑动时启用删除按钮。

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 2011-09-02
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2013-11-30
    • 2014-08-23
    • 2013-07-19
    • 2012-01-20
    相关资源
    最近更新 更多