1、主布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#F5F5F5"    android:orientation="vertical" >    <ListView        android:id="@+id/lv_apply_classify"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#00000000"        android:dividerHeight="10dip"         >    </ListView></LinearLayout>

2、listview 对应的item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tv_apply_classify_name"        android:layout_width="match_parent"        android:layout_height="35dip"        android:layout_marginLeft="10dip"        android:layout_marginRight="10dip"        android:gravity="center_vertical"        android:singleLine="true"        android:text="应用"        android:textSize="@dimen/font_body_16"        android:textColor="@color/black" />    <com.example.view.ClassifyGridView        android:id="@+id/gv_toolbar"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="5dip"        android:layout_marginRight="5dip"        android:layout_marginTop="5dp"        android:horizontalSpacing="1dip"        android:numColumns="2"        android:verticalSpacing="1dip" >    </com.<span style="font-family: Arial, Helvetica, sans-serif;">exaple</span><span style="font-family: Arial, Helvetica, sans-serif;">.ClassifyGridView></span></LinearLayout>
3、gridview对应的item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:background="@drawable/lv_item_selector"    android:orientation="vertical"    android:padding="5dip" >    <TextView        android:id="@+id/tv_apply_name"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:layout_gravity="center_horizontal"        android:layout_marginTop="5dip"        android:singleLine="true"        android:text="应用"        android:textSize="@dimen/font_body_16"        android:textColor="@color/black" />    <TextView        android:id="@+id/tv_description_name"        android:layout_width="120dip"        android:layout_height="match_parent"        android:layout_gravity="center_horizontal"        android:layout_marginTop="5dip"        android:maxLines="2"         android:textSize="@dimen/font_body_14"        android:text="应用 描述"        android:textColor="@color/gray" /> </LinearLayout>
4、主Activity

public class ClassifyActivity extends Activity {private ListView mListView;private ClassifyListViewAdapter mListViewAdapter;private List<ApplyTest> mArrayList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.apply_main_classify);init();}private void init() {mListView = (ListView) findViewById(R.id.lv_apply_classify);initData();mListViewAdapter = new ClassifyListViewAdapter(mArrayList,ClassifyActivity.this);mListView.setAdapter(mListViewAdapter);}private void initData() {mArrayList = new ArrayList<ApplyTest>(); for (int i = 0; i < 2; i++) {ApplyTest testApplyTest = new ApplyTest();testApplyTest.setName("测试分类"+i);List<ApplySub> arrayListForEveryGridView = new ArrayList<ApplySub>();for (int j = 0; j < 4; j++) {ApplySub sub = new ApplySub();sub.setName("子项"+i+j);arrayListForEveryGridView.add(sub);}testApplyTest.setSubs(arrayListForEveryGridView);mArrayList.add(testApplyTest);}}public class ApplyTest {private String name;private List<ApplySub> subs;public String getName() {return name;}public void setName(String name) {this.name = name;}public List<ApplySub> getSubs() {return subs;}public void setSubs(List<ApplySub> subs) {this.subs = subs;}}public class ApplySub {private String id;private String name;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}}

5、listview适配器

public class ClassifyListViewAdapter extends BaseAdapter {private List<ApplyTest> mList;private Context mContext;public ClassifyListViewAdapter(List<ApplyTest> mList,Context mContext) {super();this.mList = mList;this.mContext = mContext;}@Overridepublic int getCount() {if (mList == null) {return 0;} else {return this.mList.size();}}@Overridepublic Object getItem(int position) {if (mList == null) {return null;} else {return this.mList.get(position);}}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(this.mContext).inflate(R.layout.apply_main_classify_gv, null);holder.gridView = (GridView) convertView.findViewById(R.id.gv_toolbar);holder.tv_apply_classify_name = (TextView) convertView.findViewById(R.id.tv_apply_classify_name);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}if (this.mList != null) {if (holder.gridView != null) {ApplyTest mApplyTest = this.mList.get(position);ClassifyGridViewAdapter gridViewAdapter = new ClassifyGridViewAdapter(mContext,mApplyTest.getSubs());holder.gridView.setAdapter(gridViewAdapter);holder.tv_apply_classify_name.setText("分类"+position+mApplyTest.getName());}}return convertView;}private class ViewHolder {GridView gridView;public TextView tv_apply_classify_name;}}

6、gridview 适配器

public class ClassifyGridViewAdapter extends BaseAdapter {private Context mContext;private List<ApplySub> mList;public ClassifyGridViewAdapter(Context mContext,List<ApplySub> mList) {super();this.mContext = mContext;this.mList = mList;}@Overridepublic int getCount() {if (mList == null) {return 0;} else {return this.mList.size();}}@Overridepublic Object getItem(int position) {if (mList == null) {return null;} else {return this.mList.get(position);}}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(this.mContext).inflate(R.layout.apply_main_classify_group, null);holder.tv_apply_name = (TextView) convertView.findViewById(R.id.tv_apply_name);holder.tv_description_name = (TextView) convertView.findViewById(R.id.tv_description_name);holder.iv_apply_classify_icon =  (RemoteImageView) convertView.findViewById(R.id.iv_apply_classify_icon);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}if (this.mList != null) {ApplySub sApplySub = this.mList.get(position);if (holder.tv_apply_name != null) {holder.tv_apply_name.setText(sApplySub.getName());//holder.tv_description_name.setText(hashMap.get("content").toString());holder.tv_apply_name.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(mContext, "第" + (position + 1) + "个",Toast.LENGTH_SHORT).show();}});}}return convertView;}private class ViewHolder {TextView tv_apply_name;TextView tv_description_name;}}

7、重写gridview让其不滚动

public class ClassifyGridView extends GridView {public ClassifyGridView(android.content.Context context,android.util.AttributeSet attrs) {super(context, attrs);}/** * 设置不滚动 */public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}







更多相关文章

  1. Android 重写DatePicker------只显示 年-月
  2. android适配器的简单使用
  3. Android Studio学习:简单控件:Button控件的点击、长按函数重写
  4. 重写gallery 的 BaseAdapter
  5. 打造Android万能适配器Adapter
  6. android 适配器里面的按钮点击切换
  7. Android性能:经典ListView适配器convertView缓存及复用机制
  8. 重写Android Log的输出,只在debug的时候输出,release 的版本不输出

随机推荐

  1. MSSQL2005数据附加失败报错3456解决办法
  2. sqlserver CONVERT()函数用法小结
  3. SQL Server 高性能写入的一些经验总结
  4. 磁盘缓存专题之一 缓存命中和缓存未命中&
  5. 学会sql数据库关系图(Petshop)
  6. SQL Server自动更新统计信息的基本算法
  7. SQL Server 数据库备份和还原认识和总结(
  8. SQL Server 数据库备份和还原认识和总结
  9. SQL 查询性能优化 解决书签查找
  10. 编写SQL需要注意的细节Checklist总结