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

时间:2012-08-27 06:39:59

标签: android android-arrayadapter long-press

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

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

中访问此按钮

在声明arrayadapter中的按钮时,app force也会关闭..

这是我的代码..

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);
            }
}    

1 个答案:

答案 0 :(得分:1)

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

Pusedo Code,

getView()内,

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

onItemLongClick()

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

另外,如果你想检测一个ListItem上的Swipe,你可以检查我的演示示例here,当从右向左滑动ListItem时,它会启用一个删除按钮。