繁体   English   中英

使用getApplicationContext获取另一个活动上下文

[英]use getApplicationContext to get another activity context

我想获得另一个活动的Context ,其中创建了一个对象(一个适配器,其中包含我需要在第二个活动中显示的对象列表)。

public class Activity1 extends Activity {

    private Context context = this;

    private GridView gridView;
    private MyAdapter myAdapter;            

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myLayout);

        myAdapter = new MyAdapter(context);

        gridView = (GridView) findViewById(R.id.mylayout2);
        gridView.setAdapter(myAdapter);
}

public class Activity2 extends Activity {

Context context = this;

private MyAdapter myAdapter;
private GridView gridView;

@Override
public void onCreate(Bundle savedInstanceState) {         
   super.onCreate(savedInstanceState);    
   setContentView(R.layout.mylayout3);

   //what I want to do
   cardAdapter = new CardAdapter(manageCardContext); //I want this adapter to be the one in Activity1
   gridView.setAdapter(myAdapter);
}

我怎样才能做到这一点 ?

我在Activity1中创建了一个包含对象列表的适配器。

仅在将使用Adapter的活动中创建Adapter ,并且仅在该活动中使用该Adapter

使用适配器,我可以显示对象列表,但是我需要在Activity2中显示它们

然后将适配器创建代码从Activity1移到Activity2。 或者,如果两个地方都需要相同类型的适配器,请复制代码,或者让两个活动都从具有适配器创建代码的某个基类继承。

与CommonsWare的建议类似,我在Activity之外的类文件中定义了一个公共适配器类(对不起,这是C#代码,但是如果您已经编写了yer适配器,那么您应该明白了)

CommonAdapter.java

public class CommonAdapter : ArrayAdapter<AttachmentDetails>
{
    private readonly List<AttachmentDetails> _attachments;

    public CommonAdapter( Context context, List<AttachmentDetails> attachments )
        : base( context, 0, attachments )
    {       
        _attachments = attachments;
    }

    public override View GetView( int position, View convertView, ViewGroup parent )
    {
        ...
    }
}

并在我需要的地方实例化

_recordAttachmentsGrid.Adapter = new CommonAdapter(this.ApplicationContext, Model.Attachments);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM