Hibernate 统计记录总数方法汇总
2013-05-15 09:34
239 查看
本次主要通过 GridView 实现如下类似网格的,每行只显示两项 item 的效果:
为了布局的对称性,这里采用了动态设置一些 布局参数,如 padding:
GridView 也是派生于 AbsListView,这里也提供了每个 list item 的布局,以及对应的 adapter,如下:
布局文件 knowledge.xml:
每个 item 的布局文件 cat_tile.xml
本文出自 “安静的疯子” 博客,请务必保留此出处http://quietmadman.blog.51cto.com/3269500/1282216
为了布局的对称性,这里采用了动态设置一些 布局参数,如 padding:
public class KnowledgeFragment extends Fragment { private static final String TAG = "KnowledgeFragment"; private int tileWidthPx; // 每一个 tile 的宽度 private int tileHeightPx; // 每一个 tile 的高度 private int gvSpacingPx; // tile 之间的间距 @Override public void onCreate(Bundle savedInstanceState) { Log.v(TAG, "onCreate"); super.onCreate(savedInstanceState); int screenWidthDp = DensityUtil.px2dip(getActivity(), DisplayUtil.getScreenWidth(getActivity())); int gvSpacingDp = (int) getResources().getDimension(R.dimen.knowledge_first_cat_space); int tileSideDp = (screenWidthDp - gvSpacingDp * 3) / 2; // dp 转 px gvSpacingPx = DensityUtil.dip2px(getActivity(), gvSpacingDp); tileWidthPx = DensityUtil.dip2px(getActivity(), tileSideDp); // 这里设置 tile 高度为 宽度的 2/3 tileHeightPx = (int) (tileWidthPx * (2.0/3)); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.v(TAG, "onCreateView"); View v = inflater.inflate(R.layout.knowledge, null); assert v != null; GridView gvFirstCat = (GridView) v.findViewById(R.id.knowledge_gv); // 设置 gridview 的布局参数 gvFirstCat.setPadding(gvSpacingPx, gvSpacingPx, gvSpacingPx, 0); gvFirstCat.setHorizontalSpacing(gvSpacingPx); gvFirstCat.setVerticalSpacing(gvSpacingPx); gvFirstCat.setAdapter(new FirstCatAdapter(getActivity())); gvFirstCat.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.v(TAG, "click " + position); } }); return v; }
GridView 也是派生于 AbsListView,这里也提供了每个 list item 的布局,以及对应的 adapter,如下:
public class FirstCatAdapter extends BaseAdapter { private Context mContext; private LayoutInflater mInflater; private KnowledgeCat[] mCats; public FirstCatAdapter(Context context) { mContext = context; mInflater = getActivity().getLayoutInflater(); Resources res = mContext.getResources(); int[] catsId = res.getIntArray(R.array.first_cats_id); String[] catsName = res.getStringArray(R.array.first_cats_name); mCats = new KnowledgeCat[catsName.length]; TypedArray taDrawables = res.obtainTypedArray(R.array.first_cats_icon); for (int idx = 0; idx < taDrawables.length(); ++idx) { mCats[idx] = new KnowledgeCat(); mCats[idx].setCatName(catsName[idx]); mCats[idx].setCatIcon(taDrawables.getDrawable(idx)); mCats[idx].setCatId(catsId[idx]); } } @Override public int getCount() { return mCats.length; } @Override public Object getItem(int position) { return mCats[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.cat_tile, null); } KnowledgeCat kc = (KnowledgeCat) getItem(position); assert convertView != null; AbsListView.LayoutParams lp; lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, tileHeightPx, 0); // 设置 tile 高度 convertView.setLayoutParams(lp); ImageView ivIcon = (ImageView) convertView.findViewById(android.R.id.icon); ivIcon.setImageDrawable(kc.getCatIcon()); TextView tvTitle = (TextView) convertView.findViewById(android.R.id.title); tvTitle.setText(kc.getCatName()); return convertView; } }
布局文件 knowledge.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <GridView android:id="@id/knowledge_gv" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" android:scrollbarStyle="outsideOverlay" android:scrollingCache="true" android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:gravity="center"/> </LinearLayout>
每个 item 的布局文件 cat_tile.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/k_cat_tile_layout" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/k_cat_tile_bg"> <ImageView android:id="@android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerInside" android:contentDescription="@string/default_string"/> <TextView android:id="@android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4.0dip" android:textSize="@dimen/SmallTextSize"/> </LinearLayout>
本文出自 “安静的疯子” 博客,请务必保留此出处http://quietmadman.blog.51cto.com/3269500/1282216
相关文章推荐
- Hibernate 统计记录总数方法汇总
- Hibernate中使用count(*)统计记录总数
- Mysql获取id最大值、表的记录总数等相关问题的方法汇总
- 关于hibernate连接sqlServer2000个人版出现的各种错误的方法汇总
- 简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
- 简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
- Hibernate使用count(*)取得表中记录总数
- Hibernate hql getHibernateTemplate()常用方法汇总
- Hibernate中数据库无法插入中文记录的解决方法
- 简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
- Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数
- hibernate 多表联合查询,分页,重复记录导致的总记录数不对的解决方法。
- hibernate取记录总数
- Hibernate hql getHibernateTemplate()常用方法汇总
- Mysql查询优化——中间表方法优化count()统计大数据量总数问题
- spring+hibernate删除单条记录的几种方法
- 【oracle】删除重复记录方法汇总
- struts2,hibernate4,spring3配置时有关问题汇总及解决方法
- hibernate+spring 取记录条数方法
- Hibernate中如何使用count(*)取得表中记录总数