我想得到另一个我创建对象的活动的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);
}
我该怎么做?
答案 0 :(得分:2)
我在Activity1中创建了一个包含对象列表的适配器。
仅在将使用Adapter
的活动中创建Adapter
,并且仅在该活动中使用Adapter
。
使用适配器我可以显示对象列表,但我需要在Activity2中显示它们
然后将适配器创建代码从Activity1移动到Activity2。或者,如果您需要在两个位置使用相同类型的适配器,请复制代码,或者让两个活动都从具有适配器创建代码的某个基类继承。
答案 1 :(得分:0)
与CommonsWare建议类似,我在Activity之外定义了一个公共适配器类,只是在一个类文件中(对不起,这是C#代码,但如果你已经编写了你的适配器,你应该明白这一点)
<强> 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);