如何调出 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;
}