2012-06-06 41 views
25

我使用自己的适配器自定义ListView。我正在处理在我的ListView的项目中点击Button,并且我希望ListView在此点击中变得不可见。如何从适配器访问ListView

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

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; 
    } 
} 
+0

我认为有一个适配器的全部重点是从ListView中分离逻辑。 – sudocoder

回答

64

ViewGroup parent持有参考View的父母通过getView()回来,而你的情况是你的自定义列表视图。

@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; 
} 
8

取而代之,您可以通过适配器的构造函数传递Listview的引用,并将其存储在本地Listview变量中。您可以使用此访问列表视图您这method.Like

public ViewPackagesAdapter(Activity mActivity, ListView cmgListView) { 
     this.mActivity = mActivity; 
     this.mListView=cmgListView; 
    } 

现在通过mListView访问活动的列表视图..

0

在我的情况GridItemClickListner没有出于某种原因的工作。我使用此

public View getView(final int position, View convertView, ViewGroup parent) { 
     convertView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ((ClockGridView) v.getParent()).performItemClick(v, position, v.getId()); 
         (OR) 
      ((ClockGridView)parent).performItemClick(v, position, v.getId()); 
    } 
}); 
} 

“ClockGridView” 延伸 “的GridView” 级从适配器类访问的GridView。