您的位置:首页 > 其它

如何在listview的adapter中关闭listview所在的activity

2015-07-23 10:42 281 查看
假如我们需要在listview的adapter中的某个控件如textview中关闭listview所在的activity(暂且称为主activity吧),我们改怎么做?

刚开始我也不知道怎么获取主activity,有一个比较笨的方法,那就是在主activity中定义一个public方法,在那个public方法中调用主activity的finish()方法,但是这个方法使类极不安全,所以我们还是另找他法。

一般来说我们会传入一个Context变量,来使我们方便的得到LayoutInflater,能不能利用这个Context变量呢?

答案是肯定的,一般我们初始化adapter都是类似这样的方式:

listAdapter = new MyListAdapter(MyListActivity.this, R.layout.activity_list, itemList);


对应的构造函数是这样的:

public MyListAdapter(Context context, int textViewResourceId,List objects)


所以这里的Context是MyListActivity.this,那么我们将context转化不就行了?

holder.tvLastTipRight.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//      if(context instanceof Activity)同样效果
if(Activity.class.isInstance(context))
{
// 转化为activity,然后finish就行了
Activity activity = (Activity)context;
activity.finish();
}
}
});


事实证明是可以的,Well done!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: