前言:
由于项目需要,需在一个已有布局中嵌入类似九宫格的布局,以下是传统的九宫格布局。(来源网络)
但此次需求为在已有布局中的嵌入,经过摸索得到方法。
显示九宫格需要用GridView, 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图。第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现:
package cn.cqupt.unicom;
import cn.cqupt.unicom.Regist3Activity.SpinnerXMLSelectedListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;
public class FleaMarketShowActivity extends Activity {
/** Called when the activity is first created. */
private Spinner spinner1;
private Spinner spinner2;
private GridView gridView1;
private ArrayAdapter adapter1;
private ArrayAdapter adapter2;
@Override
public void onCreate(Bundle savedInstanceState) {
//退出程序用代码·····································································
MyApplication.getInstance().addActivity(this);
//退出程序用代码end···································································
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.flea_market_show);
spinner1 = (Spinner)findViewById(R.id.spinner1);
spinner2 = (Spinner)findViewById(R.id.spinner2);
gridView1 = (GridView)findViewById(R.id.gridView1);
//将可选内容与ArrayAdapter连接起来
adapter1 = ArrayAdapter.createFromResource(this, R.array.jiagepaixu, android.R.layout.simple_spinner_item);
//设置下拉列表的风格
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
//添加事件Spinner事件监听
spinner1.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
//设为默认
spinner1.setVisibility(View.VISIBLE);
adapter2 = ArrayAdapter.createFromResource(this, R.array.julifanwei, android.R.layout.simple_spinner_item);
//设置下拉列表的风格
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter2);
//添加事件Spinner事件监听
spinner2.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
//设为默认
spinner2.setVisibility(View.VISIBLE);
//获取到GridView
gridView1.setAdapter(new MainGridViewAdapter(this));
//给gridview设置数据适配器
gridView1.setAdapter(new MainGridViewAdapter(this));
//点击事件
gridView1.setOnItemClickListener(new MainItemClickListener());
}
//以下为点击事件
private class MainItemClickListener implements OnItemClickListener{
/**
* @param parent 代表当前的gridview
* @param view 代表点击的item
* @param position 当前点击的item在适配中的位置
* @param id 当前点击的item在哪一行
*/
public void onItemClick(AdapterView> parent, View view, int position,
long id) {
switch (position) {
case 0:
Intent intent = new Intent(FleaMarketShowActivity.this,GoodsInfoActivity.class);
startActivity(intent);
break;
}
}
}
//下拉框监听器 使用XML形式操作
class SpinnerXMLSelectedListener implements OnItemSelectedListener{
public void onItemSelected(AdapterView> arg0, View arg1, int arg2,
long arg3) {
System.out.println("------arg2------"+arg2);
System.out.println("-------arg3-----"+arg3);
}
public void onNothingSelected(AdapterView> arg0) {
}
}
}
适配器java代码:
package cn.cqupt.unicom;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
// 完成gridview 数据到界面的适配
public class MainGridViewAdapter extends BaseAdapter {
private static final String TAG = "MainGridViewAdapter";
private String[] names = {"手机防盗","通讯卫士","软件管理","任务管理","上网管理","手机杀毒","系统优化","高级工具","设置中心"};
private int[] icons = {R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct};
private Context context;
LayoutInflater infalter;
public MainGridViewAdapter(Context context) {
this.context = context;
//方法1 通过系统的service 获取到 试图填充器
//infalter = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//方法2 通过layoutinflater的静态方法获取到 视图填充器
infalter = LayoutInflater.from(context);
}
// 返回gridview里面有多少个条目
public int getCount() {
return names.length;
}
//返回某个position对应的条目
public Object getItem(int position) {
return position;
}
//返回某个position对应的id
public long getItemId(int position) {
return position;
}
//返回某个位置对应的视图
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG,"GETVIEW "+ position);
//把一个布局文件转换成视图
View view = infalter.inflate(R.layout.mainactivity_item, null);
ImageView iv =(ImageView) view.findViewById(R.id.ItemImage);
TextView tv = (TextView) view.findViewById(R.id.ItemText);
//设置每一个item的名字和图标
iv.setImageResource(icons[position]);
tv.setText(names[position]);
return view;
}
}
主界面布局文件:
android:layout_height="fill_parent"
android:background="#ffffff"
android:gravity="center"
android:orientation="vertical">
android:layout_height="wrap_content"
android:orientation="vertical" >
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="跳蚤市场"
android:textColor="#039acc"
android:textSize="40sp" />
android:layout_height="wrap_content"
android:orientation="vertical" >
android:layout_height="wrap_content" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center">
内嵌试图布局文件:
android:layout_height="wrap_content"
>
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
android:layout_below="@+id/ItemImage"
android:id="@+id/ItemText"
android:layout_centerHorizontal="true"
/>
************************************************************************************************end************************************************************************************