如何在阵列适配器中长按时设置按钮的可见性

Posted

技术标签:

【中文标题】如何在阵列适配器中长按时设置按钮的可见性【英文标题】: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:不,我没有得到答案.. 【参考方案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 从右向左滑动时启用删除按钮。

【讨论】:

以上是关于如何在阵列适配器中长按时设置按钮的可见性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中长按时选择表格行

如何将图像视图的可见性设置为 Spinner 所选项目的可见性

如何通过外部按钮在列表视图中设置可见性?

如何设置单选按钮的可见性属性

如何仅在某些行上显示图像按钮

在 AlertDialog 正按钮上更改 textView 的可见性