2

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

我创建了一个扩展数组适配器的类,并且我在这个类中声明了按钮。现在我需要在代码中访问这个按钮,以便长按列表项以将其设置为可见。我如何访问这个按钮在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);
            }
}    
4

1 回答 1

1

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

普塞多代码,

里面getView()

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

里面onItemLongClick()

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

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

于 2012-08-27T06:55:00.147 回答