如何调出 Adapter to Fragment?
How to bring up Adapter to Fragment?
我正在使用 3 个选项卡,每个选项卡都有片段。我需要将这个 Activity 带到选项卡的片段中。这可能吗?
public class MActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
GridView gridView = (GridView) findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(this));
}
}
public class FragmentTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.grid_layout, container, false);
GridView gridView = (GridView) getActivity().findViewById(R.id.grid_view);
return rootView;
}
谁能帮我编辑片段 class 以从 Adapter 中引入 activity。
谢谢
一个不太干净但最简单的方法是这样做:
public class FragmentTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_1, container, false);
activityAdapter = (MActivity)getActivity().getImageAdapter();
return rootView;
}
在您的 activity->
中公开适配器 getter
public class MActivity extends Activity {
private ImageAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
GridView gridView = (GridView) findViewById(R.id.grid_view);
this.adapter = new ImageAdapter(this);
gridView.setAdapter(this.adapter);
}
public ImageAdapter getImageAdapter(){
return this.adapter;
}
}
第二种方法是在您的片段中创建一个构造函数,以在构建片段时接收适配器对象。 (这将是一个更干净的对象)
如果我对您的问题的理解是正确的,一种方法是通过 ViewPager Adapter 和 Fragments 的构造函数传递 activity/context 对象。
从here.
得到正确答案
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_1,container,false);
GridView gridView = (GridView) view.findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(view.getContext()));
return view;
}
我正在使用 3 个选项卡,每个选项卡都有片段。我需要将这个 Activity 带到选项卡的片段中。这可能吗?
public class MActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
GridView gridView = (GridView) findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(this));
}
}
public class FragmentTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.grid_layout, container, false);
GridView gridView = (GridView) getActivity().findViewById(R.id.grid_view);
return rootView;
}
谁能帮我编辑片段 class 以从 Adapter 中引入 activity。 谢谢
一个不太干净但最简单的方法是这样做:
public class FragmentTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_1, container, false);
activityAdapter = (MActivity)getActivity().getImageAdapter();
return rootView;
}
在您的 activity->
中公开适配器 getterpublic class MActivity extends Activity {
private ImageAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
GridView gridView = (GridView) findViewById(R.id.grid_view);
this.adapter = new ImageAdapter(this);
gridView.setAdapter(this.adapter);
}
public ImageAdapter getImageAdapter(){
return this.adapter;
}
}
第二种方法是在您的片段中创建一个构造函数,以在构建片段时接收适配器对象。 (这将是一个更干净的对象)
如果我对您的问题的理解是正确的,一种方法是通过 ViewPager Adapter 和 Fragments 的构造函数传递 activity/context 对象。
从here.
得到正确答案 public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_1,container,false);
GridView gridView = (GridView) view.findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(view.getContext()));
return view;
}