package pyp.navigation.association.one; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; import pyp.navigation.R; import pyp.navigation.association.bean.Association; import pyp.navigation.association.service.PinyinComparator; import pyp.navigation.association.service.ReadXmlByPullService; import pyp.navigation.main.MainActivity; import android.app.Activity; import android.content.Context; import android.graphics.PixelFormat; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.LinearLayout.LayoutParams; /** * @Title: AssociationFragment * @Description: 社团模块主界面 * @author qsuron * @date 2014-7-25 * @email admin@qiushurong.cn */ public class FragmentOne_List extends Fragment { /** * @Title: 接口 OnAssociationListener * @Description: 用于回调Activity,实现fragment之间的通信 * @author qsuron * @date 2014-7-20 * @email admin@qiushurong.cn */ public interface OnAssociationListener { public void onNewFragment(int id, String name); } /** * 字段 List<Association> : list 存放社团信息的列表 */ private List<Association> list = new ArrayList<Association>(); private View parentView; private ListView mListView; private SideBar indexBar; private WindowManager mWindowManager; private TextView mDialogText; private View head; private MainActivity parentActivity; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { parentActivity = (MainActivity) activity; } catch (ClassCastException e) { e.printStackTrace(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { initData(); initViews(inflater, container); initListensers(); return parentView; } public void initData() { // 读取XML取得社团列表:Assocaition{key,name,key} InputStream inputStream = FragmentOne_List.class.getClassLoader() .getResourceAsStream("AllAssociation.xml"); try { list = ReadXmlByPullService.ReadXmlByPull(inputStream); } catch (Exception e) { list.add(new Association("A", "读取XML异常", "null")); } // 根据a-z进行排序 Collections.sort(list, new PinyinComparator()); } public void initViews(LayoutInflater inflater, ViewGroup container) { parentView = inflater.inflate(R.layout.association_fragment_one, container, false); parentActivity = (MainActivity) this.getActivity(); // 启动activity时不自动弹出软键盘 parentActivity.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); indexBar = (SideBar) parentView .findViewById(R.id.association_main_sideBar); mDialogText = (TextView) LayoutInflater.from(parentActivity).inflate( R.layout.association_fragment_one_toast, null); mDialogText.setVisibility(View.INVISIBLE); head = LayoutInflater.from(parentActivity).inflate( R.layout.association_fragment_one_search, null); mListView = (ListView) parentView .findViewById(R.id.association_main_list); mListView.addHeaderView(head); mWindowManager = (WindowManager) parentActivity .getSystemService(Context.WINDOW_SERVICE); mWindowManager.addView(mDialogText, getLayoutParams()); indexBar.setTextView(mDialogText); // 为listView设置内容适配类 mListView.setAdapter(new MyListAdapter(parentActivity, list)); // 设置SideBar的ListView内容实现点击a-z中任意一个进行定位 indexBar.setListView(mListView); // 隐藏滚动条 mListView.setVerticalScrollBarEnabled(true); } public void initListensers() { mListView.setOnItemClickListener(mListViewListener); } /** * 方法 getLayoutParams 获取布局参数 * * @return WindowManager.LayoutParams */ private WindowManager.LayoutParams getLayoutParams() { WindowManager.LayoutParams lp = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); return lp; } /** * 字段 OnItemClickListener : mListViewListener mListView监听器 */ OnItemClickListener mListViewListener = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String association_ID = list.get(position - 1).getId(); if (association_ID == null || association_ID.equals("") || view.equals(head)) { // Log.i("qsuron", "!!!!!!!! getId() = null"); return; } // Log.i("qsuron", "onNewFragment : "+id); // 切换到详情页面 parentActivity.showAssociationDetail(list.get(position - 1)); } }; }