
[英]The method getApplicationContext() - how to use without Activity
[英]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.