您的位置:首页 > 其它

Hibernate 统计记录总数方法汇总

2013-05-15 09:34 239 查看
本次主要通过 GridView 实现如下类似网格的,每行只显示两项 item 的效果:





为了布局的对称性,这里采用了动态设置一些 布局参数,如 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: