package cn.koolcloud.ipos.appstore.fragment; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import cn.koolcloud.ipos.appstore.R; import cn.koolcloud.ipos.appstore.adapter.SubCategoryListAdapter; import cn.koolcloud.ipos.appstore.constant.Constants; import cn.koolcloud.ipos.appstore.entity.Category; import cn.koolcloud.ipos.appstore.fragment.base.BaseFragment; import cn.koolcloud.ipos.appstore.fragment.tab.NoNetworkFragment; import cn.koolcloud.ipos.appstore.fragment.tab.NormalListFragment; import cn.koolcloud.ipos.appstore.utils.Logger; import cn.koolcloud.ipos.appstore.utils.NetUtil; public class LeftCategoryFragment extends BaseFragment implements OnItemClickListener { private static final String TAG = "LeftCategoryFragment"; private ListView categoryListView; private List<Category> categoryDataSource = null; //category data source. private int currentSelectedPosition = 0; //current position tag private SubCategoryListAdapter adapter = null; private FragmentManager fragManager; public static LeftCategoryFragment getInstance() { LeftCategoryFragment leftCategoryFragment = new LeftCategoryFragment(); //get params return leftCategoryFragment; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); categoryDataSource = (List<Category>) getArguments().getSerializable(Constants.SER_KEY); currentSelectedPosition = getArguments().getInt(Constants.CATEGORY_LIST_POSITION); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.left_category_list, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); fragManager = getFragmentManager(); categoryListView = (ListView) getActivity().findViewById(R.id.listView); Logger.d("onActivityCreated"); categoryListView.setOnItemClickListener(this); //init status showCategoryFragment(currentSelectedPosition); } @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); initListViewAdapter(); } private void initListViewAdapter() { adapter = new SubCategoryListAdapter(getActivity(), categoryDataSource, currentSelectedPosition); categoryListView.setAdapter(adapter); adapter.notifyDataSetChanged(); } @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) { // TODO Auto-generated method stub //recovery the selected item status Logger.d("onItemClick method is invoked"); View rootView = categoryListView.getChildAt(currentSelectedPosition); View selectedView = rootView.findViewById(R.id.left_nav_item_root); selectedView.setSelected(false); rootView.findViewById(R.id.indicator).setVisibility(View.GONE); //set selected status on the clicking item view.findViewById(R.id.left_nav_item_root).setSelected(true); view.findViewById(R.id.indicator).setVisibility(View.VISIBLE); currentSelectedPosition = position; //TODO send selected category to content frame and display general app fragment showCategoryFragment(position); } //show local soft fragment private void showCategoryFragment(int pos) { //fragment management FragmentTransaction fragTransaction = fragManager.beginTransaction(); if (NetUtil.isAvailable(getActivity())) { NormalListFragment normalAppFragment = NormalListFragment.getInstance(); Bundle args = new Bundle(); Category category = categoryDataSource.get(pos); args.putSerializable(Constants.SER_KEY, category); normalAppFragment.setArguments(args); fragTransaction.replace(R.id.frame_content, normalAppFragment); } else { NoNetworkFragment noNetFragment = NoNetworkFragment.getInstance(); fragTransaction.replace(R.id.frame_content, noNetFragment); } fragTransaction.commit(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); } }