从gridview适配器切换片段

时间:2014-12-20 06:44:43

标签: android gridview fragment

我有一个像

这样的代码结构
1.MAINACTIVITY
2.FRAGMENTACTIVITY
3.GRIDVIEWADAPTER

-In my main activity I have set code to display and switch fragments that I have in my project
-In fragment activity I have set a custom gridview with a image and text layout
-In gridview adapter I have onitemclicklistener for gridview items

现在我想在gridview的onitemclicklistener点击时切换片段, 但我切换片段的代码是在主要活动中。如何传递参数需要将片段从网格视图适配器类切换到主活动。?

1 个答案:

答案 0 :(得分:0)

试试这个

public class MainActivity extends Fragment {
    GridView gridview;
    FragmentActivity frag_activity;

    public MainActivity () {
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this.frag_activity = (FragmentActivity) activity;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_create_form,
                container, false);
        gridview = (GridView) rootView.findViewById(R.id.gridView1);
        gridview.setVerticalScrollBarEnabled(false);
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        GridMaker();
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onViewCreated(view, savedInstanceState);
        GridMaker();

    }

    private void GridMaker() {
        gridview.setAdapter(new Custom_Adapter(frag_activity));
        gridview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                String name = null;

                if (arg2 == 0) {
                    name = "A";
                    displayView(arg2, name);
                } else if (arg2 == 1) {
                    name = "B";
                    displayView(arg2, name);
                } else if (arg2 == 2) {
                    name = "C";
                    displayView(arg2, name);
                } else if (arg2 == 3) {
                    name = "D";
                    displayView(arg2, name);
                } else if (arg2 == 4) {
                    name = "E";
                    displayView(arg2, name);
                }

            }
        });
    }

    private void displayView(int position, String name) {
        // update the main content by replacing fragments
        Fragment fragment = null;
        fragment = new DynamicFragment(name);

        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment)
                    .addToBackStack(null).commit();

        }
    }

}