package com.socks.jiandan.ui.fragment; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.socks.jiandan.R; import com.socks.jiandan.base.BaseFragment; import com.socks.jiandan.model.MenuItem; import com.socks.jiandan.ui.MainActivity; import com.socks.jiandan.ui.SettingActivity; import java.util.ArrayList; import butterknife.ButterKnife; import butterknife.InjectView; public class MainMenuFragment extends BaseFragment { @InjectView(R.id.recycler_view) RecyclerView mRecyclerView; @InjectView(R.id.rl_container) RelativeLayout rl_container; private LinearLayoutManager mLayoutManager; private MainActivity mainActivity; private MenuAdapter mAdapter; private MenuItem.FragmentType currentFragment = MenuItem.FragmentType.FreshNews; @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof MainActivity) { mainActivity = (MainActivity) activity; } else { throw new IllegalArgumentException("The activity must be a MainActivity !"); } } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_drawer, container, false); ButterKnife.inject(this, view); mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); rl_container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(getActivity(), SettingActivity.class)); mainActivity.closeDrawer(); } }); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new MenuAdapter(); addAllMenuItems(mAdapter); mRecyclerView.setAdapter(mAdapter); } private class MenuAdapter extends RecyclerView.Adapter<ViewHolder> { private ArrayList<MenuItem> menuItems; public MenuAdapter() { menuItems = new ArrayList<>(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.drawer_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { final MenuItem menuItem = menuItems.get(position); holder.tv_title.setText(menuItem.getTitle()); holder.img_menu.setImageResource(menuItem.getResourceId()); holder.rl_container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { if (currentFragment != menuItem.getType()) { Fragment fragment = (Fragment) Class.forName(menuItem.getFragment() .getName()).newInstance(); mainActivity.replaceFragment(R.id.frame_container, fragment); currentFragment = menuItem.getType(); } } catch (Exception e) { e.printStackTrace(); } mainActivity.closeDrawer(); } }); } @Override public int getItemCount() { return menuItems.size(); } } private static class ViewHolder extends RecyclerView.ViewHolder { private ImageView img_menu; private TextView tv_title; private RelativeLayout rl_container; public ViewHolder(View itemView) { super(itemView); img_menu = (ImageView) itemView.findViewById(R.id.img_menu); tv_title = (TextView) itemView.findViewById(R.id.tv_title); rl_container = (RelativeLayout) itemView.findViewById(R.id.rl_container); } } @Override public void onResume() { super.onResume(); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); //要显示妹子图而现在没显示,则重现设置适配器 if (sp.getBoolean(SettingFragment.ENABLE_SISTER, false) && mAdapter.menuItems.size() == 4) { addAllMenuItems(mAdapter); mAdapter.notifyDataSetChanged(); } else if (!sp.getBoolean(SettingFragment.ENABLE_SISTER, false) && mAdapter.menuItems.size() == 5) { addMenuItemsNoSister(mAdapter); mAdapter.notifyDataSetChanged(); } } private void addAllMenuItems(MenuAdapter mAdapter) { mAdapter.menuItems.clear(); mAdapter.menuItems.add(new MenuItem("新鲜事", R.drawable.ic_explore_white_24dp, MenuItem.FragmentType.FreshNews, FreshNewsFragment.class)); mAdapter.menuItems.add(new MenuItem("无聊图", R.drawable.ic_mood_white_24dp, MenuItem.FragmentType.BoringPicture, PictureFragment.class)); mAdapter.menuItems.add(new MenuItem("妹子图", R.drawable.ic_local_florist_white_24dp, MenuItem.FragmentType.Sister, SisterFragment.class)); mAdapter.menuItems.add(new MenuItem("段子", R.drawable.ic_chat_white_24dp, MenuItem.FragmentType.Joke, JokeFragment .class)); mAdapter.menuItems.add(new MenuItem("小电影", R.drawable.ic_movie_white_24dp, MenuItem.FragmentType.Video, VideoFragment.class)); } private void addMenuItemsNoSister(MenuAdapter mAdapter) { mAdapter.menuItems.clear(); mAdapter.menuItems.add(new MenuItem("新鲜事", R.drawable.ic_explore_white_24dp, MenuItem.FragmentType.FreshNews, FreshNewsFragment.class)); mAdapter.menuItems.add(new MenuItem("无聊图", R.drawable.ic_mood_white_24dp, MenuItem.FragmentType.BoringPicture, PictureFragment.class)); mAdapter.menuItems.add(new MenuItem("段子", R.drawable.ic_chat_white_24dp, MenuItem.FragmentType.Joke, JokeFragment .class)); mAdapter.menuItems.add(new MenuItem("小电影", R.drawable.ic_movie_white_24dp, MenuItem.FragmentType.Video, VideoFragment.class)); } }