在我的适配器中使用Activity paramActivity而不是Context context是否正确

时间:2018-07-02 10:45:23

标签: java android

您好,我是android的新手,我有一个看似很简单的问题,但我只是想了解我在网上找到的这段代码

使用Activity paramActivity是指Activity上下文,为什么不使用activity .this?

承包商适配器是否可能包含超级适配器中缺少的值?

public class myAdapter
      extends ArrayAdapter<String>
    {
      private final Activity context;
      private final String[] subtitleId;
      private final String[] titleId;

      public myAdapter(Activity paramActivity, String[] paramArrayOfString1, 
      String[] paramArrayOfString2)
      {
        super(paramActivity, 2745458745 , paramArrayOfString1);
        this.context = paramActivity;
        this.titleId = paramArrayOfString1;
        this.subtitleId = paramArrayOfString2;
      }
   public View getView(int paramInt, View paramView, ViewGroup 
   paramViewGroup)
  {
    View localView = this.context.getLayoutInflater().inflate(2745458745, 
    null, true);
    TextView localTextView1 = (TextView)localView.findViewById(2131296514);
    TextView localTextView2 = (TextView)localView.findViewById(2131296502);
    localTextView1.setText(this.titleId[paramInt]);
    localTextView2.setText(this.subtitleId[paramInt]);
    return localView;
  }
}

2 个答案:

答案 0 :(得分:0)

  

通过使用Activity paramActivity指的是Activity上下文

假设您正在传递扩展AppCompatActivity作为参数的活动...

YourActivity扩展AppCompatActivity,扩展FragmentActivity,扩展BaseFragmentActivityApi16,扩展BaseFragmentActivityApi14,扩展SupportActivity,扩展Activity,扩展{{ 1}}扩展了ContextThemeWrapper,您将发现扩展了ContextWrapper

这听起来可能太多了,但是请放心,您可以从这里获得的是可以将Context转换为Activity

  

为什么不使用活动。这

要使用Activity.this,您必须让Activity的类包含您要编写该语句的字段,因为Context引用了该类的当前实例。

为清楚起见,您应该在Java中查找this关键字。

答案 1 :(得分:0)

是的,您可以使用Activity.this,因为适配器需要上下文和下面发布的超级构造函数示例。

在ArrayAdapter中,您需要定义arrayList以及textview来显示arrylist项目。

  public ArrayPopupAdapter(Context context, int textViewResourceId, ArrayList<String> mItems) {
    super(context, textViewResourceId, mItems);
    this.mContext = context;
}