如何从适配器访问 ListView [英] How do I access to ListView from the adapter

查看:37
本文介绍了如何从适配器访问 ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有我自己的适配器的自定义 ListView.我正在处理对 ListView 项目中的 Button 的点击,并且我希望 ListView 在这次点击时变得不可见.

I have a custom ListView with my own adapter. I'm handling the click on a Button in my ListView's item, and I want the ListView to become invisible on this click.

我不知道如何从适配器访问 ListView.

I have no idea how to get access to the ListView from the adapter.

public class ScheduleArrayAdapter extends ArrayAdapter<ScheduleListItem> {

    /*...*/
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(id, null);
        }
        final ScheduleListItem o = items.get(position);
        if (o != null) {

        /*...*/         

            Button details=(Button)v.findViewById(R.id.btn_details);
            details.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //HOW TO MAKE (R.id.lv_schedule) TO BECOME INVISIBLE HERE?
                }
            });
        }
        return v;
    }
}

推荐答案

ViewGroup parent 持有对 getView()<返回的 View 的父级的引用/code>,在您的情况下是您的自定义列表视图.

ViewGroup parent holds reference to the parent of the View returned by getView(), which in your case is your custom listview.

@Override
public View getView(int position, View convertView, final ViewGroup parent) {
    ...
    details.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            parent.setVisibility(View.INVISIBLE); // or View.GONE
        }
    });
    ...
    return v;
}

这篇关于如何从适配器访问 ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆