`
龙哥IT
  • 浏览: 263600 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

GridView示例2(自动增长)

阅读更多

第一步:布局xml

 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:background="@drawable/redball_ground">
<GridView 
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	android:padding="10dip" android:verticalSpacing="10dip"
	android:horizontalSpacing="10dip" android:numColumns="auto_fit"
	android:columnWidth="60dip" android:stretchMode="columnWidth"
	android:gravity="center" android:id="@+id/grid"/>
</LinearLayout>

 第二步:定义图片的个数以及其他

// --点击次数 集合
	private ArrayList<String> redBallList = new ArrayList<String>();
	private GridView gv_red_ball;
	private String FirstGV = "REDBALL";
	// --红色球
	int RED_BALL_COUNT = 33;// 球的个数
	int RED_LINE_COUNT = 0;
	private Drawable tv_gray_draw;
	private Drawable tv_red_draw;
	private Bitmap orgimg;
	private int width;// 获取原始图片宽度

 

第三步:创建Activity

①:设置获取屏幕宽度

	// 屏幕宽度
		DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);
		int screenwidth = dm.widthPixels;

 

②:加载原始图片,获取尺寸

	// 加载原始图片
		orgimg = BitmapFactory.decodeResource(getResources(),
				R.drawable.red_ball);// 将图片解析成二进制,getResources()是加载资源文件
		width = orgimg.getWidth();

 

③:设置每行图片个数

	RED_LINE_COUNT  = screenwidth / width;

 

④:设置列数

gv_red_ball.setNumColumns(RED_LINE_COUNT);
		gv_red_ball.setOnItemClickListener(new GridItemClickListener(FirstGV,
				RED_BALL_COUNT));
		gv_red_ball.setAdapter(new BallAdapter(this, tv_gray_draw));

 第四:创建所需类OnItemClickListener

class GridItemClickListener implements OnItemClickListener {

		String ballColor;
		int ballCount;

		public GridItemClickListener(String ballColor, int ballCount) {
			super();
			this.ballColor = ballColor;
			this.ballCount = ballCount;
		}

		public void onItemClick(AdapterView<?> arg0, View view, int position,
				long arg3) {
			TextView tv_ball = (TextView) view;
			Drawable current_draw = tv_ball.getBackground();
			String ball_num = tv_ball.getText().toString();

			if (ballColor.equals(FirstGV)) {
				ballCount = RED_BALL_COUNT;
				if (current_draw == tv_gray_draw) {
					tv_ball.setBackgroundDrawable(tv_red_draw);
					tv_ball.setTextColor(Color.WHITE);
				} else {
					tv_ball.setBackgroundDrawable(tv_gray_draw);
					tv_ball.setTextColor(Color.BLACK);
				}
				if (redBallList.contains(ball_num)) {
					redBallList.remove(ball_num);
				} else {
					redBallList.add(ball_num);
				}
			}
		}
	}

 

第五步:创建构造函数,来继承Baseadapter

public int getRED_BALL_COUNT() {
		return RED_BALL_COUNT;
	}

	public void setRED_BALL_COUNT(int rED_BALL_COUNT) {
		RED_BALL_COUNT = rED_BALL_COUNT;
	}
	// 自定义适配器
	class BallAdapter extends BaseAdapter {
		// 上下文环境
		Context context;
		Drawable drawable;
		// 构造方法
		public BallAdapter(Context context, Drawable drawable) {
			super();
			this.context = context;
			this.drawable = drawable;
		}

		// 获得数量
		public int getCount() {
			// TODO Auto-generated method stub
			if (drawable == tv_gray_draw) {
				return getRED_BALL_COUNT();
			} else {
				return 0;
			}
		}
		// 获得当前选项
		public Object getItem(int item) {
			return item;
		}
		// 获得当前选项ID
		public long getItemId(int id) {
			return id;
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			TextView tv_ball;

			if (convertView == null) {
				// 实例化ImageView对象
				tv_ball = new TextView(context);
				tv_ball.setLayoutParams(new GridView.LayoutParams(
						LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
			} else {
				tv_ball = (TextView) convertView;
			}
			tv_ball.setGravity(Gravity.CENTER);
			tv_ball.setTextColor(Color.BLACK);
			TextPaint tp = tv_ball.getPaint();
			tp.setFakeBoldText(true);
			tv_ball.setBackgroundDrawable(drawable);
			tv_ball.setText((position + 1) + "");

			return tv_ball;
		}
	}

 

 

  • 大小: 31.1 KB
分享到:
评论

相关推荐

    Android编程开发之ScrollView嵌套GridView的方法

    在这个自定义的MyGridView中,我们重写了`onMeasure`方法,将其高度规格(heightMeasureSpec)设置为一个有限的最大值(Integer.MAX_VALUE &gt;&gt; 2),这样可以防止GridView的高度无限增长,从而避免与ScrollView的滚动...

    学生信息管理系统分析文档

    - **数据库的创建**:使用`CREATE DATABASE`语句创建名为`XSGLXT`的学生信息管理系统数据库,并指定了初始大小和增长方式。 - **表的创建**: - **学籍信息表**:定义了学号、姓名、性别等字段。 - **课程信息表...

    简单的ASP.NET增删改查

    GridView、ListView等控件支持数据绑定,可以自动将数据库中的数据展示出来,同时也提供编辑和删除功能。在ASP.NET中,可以使用DataSource控件(如SqlDataSource)来连接数据库并提供数据。 8. 页面生命周期: ...

    ASP.NET源码——[电子商务]NetShopForge网上商店程序(VB)源码.zip

    "NetShopForge"是一个使用VB(Visual Basic)语言编写的ASP.NET源码示例,专为构建网上商店系统而设计。 1. **ASP.NET基础** ASP.NET是.NET Framework的一部分,它提供了丰富的服务器控件、事件驱动模型和自动页面...

    Flutter 实战(305页).pdf

    随着移动互联网的发展,跨平台应用开发的需求日益增长。Flutter作为一款由Google推出的UI工具包,因其高效性和灵活性而受到开发者的青睐。自2018年Google IO大会上发布首个预览版以来,Flutter在国内乃至全球范围内...

Global site tag (gtag.js) - Google Analytics