疯狂猜歌 5-2 实现待选文字框点击事件  自定义的GirdView中,holder的值是a0...a23

holder如果定义在getView 里就没事,点击a1就显示a1,但是,如果定义在成员变量里,无论点击哪个按钮,都只是显示a0,求解答

以下是源码

自定义的=====================================gridView======================

package cn.bashi.GuessMusic.mui;

import java.util.ArrayList;

import android.content.Context;

import android.util.AttributeSet;

import android.view.View;

import android.view.ViewGroup;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.GridView;

import cn.bashi.GuessMusic.R;

import cn.bashi.GuessMusic.model.ButtonWorld;

import cn.bashi.GuessMusic.model.IWorldButtonClickListener;

import cn.bashi.GuessMusic.util.Util;

public class MyGridView extends GridView {

private ArrayList ButtonWorlds = new ArrayList();

private myBaseAdapter myBase;

private Context context;

private Animation mScaleAnimation;

private IWorldButtonClickListener WorldButtonClickListener;

public MyGridView(Context context, AttributeSet attrs) {

super(context, attrs);

this.context = context;

myBase = new myBaseAdapter();

setAdapter(myBase);

}

public void updateData(ArrayList ButtonWorlds){

this.ButtonWorlds = ButtonWorlds;

setAdapter(myBase);

}

class myBaseAdapter extends BaseAdapter{

@Override

public int getCount() {

// TODO 自动生成的方法存根

return ButtonWorlds.size();

}

@Override

public Object getItem(int position) {

// TODO 自动生成的方法存根

return ButtonWorlds.get(position);

}

@Override

public long getItemId(int position) {

// TODO 自动生成的方法存根

return position;

}

@Override

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

final ButtonWorld holder;

// 加载了所有item后,一起再放动画,动画没放完,没有view

if(convertView == null){

// 加载动画

mScaleAnimation = AnimationUtils.loadAnimation(context, R.anim.scale);

mScaleAnimation.setStartOffset(position * 100);

convertView = Util.getView(context, R.layout.mygridview_item);

holder = ButtonWorlds.get(position);

holder.setWorldId(position);

holder.setViewButtonWorld((Button) convertView.findViewById(R.id.worldBut_item));

holder.getViewButtonWorld().setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO 自动生成的方法存根

WorldButtonClickListener.onWorldButtonClick(holder);

}

});

convertView.setTag(holder);

}else{

holder = (ButtonWorld) convertView.getTag();

}

holder.getViewButtonWorld().setText(holder.getWorldValue());

convertView.startAnimation(mScaleAnimation);

return convertView;

}

}

public void regestOnWorldButtonClick(IWorldButtonClickListener listener){

this.WorldButtonClickListener = listener;

}

}

========================================holder================================

package cn.bashi.GuessMusic.model;

import android.widget.Button;

/** 显示的文字按钮*/

public class ButtonWorld {

private int worldId;

private String worldValue;

private Button ViewButtonWorld;

private boolean isVisibility;

public ButtonWorld(){

worldValue = "";

isVisibility = true;

}

public int getWorldId() {

return worldId;

}

public void setWorldId(int worldId) {

this.worldId = worldId;

}

public String getWorldValue() {

return worldValue;

}

public void setWorldValue(String worldValue) {

this.worldValue = worldValue;

}

public Button getViewButtonWorld() {

return ViewButtonWorld;

}

public void setViewButtonWorld(Button viewButtonWorld) {

ViewButtonWorld = viewButtonWorld;

}

public boolean isVisibility() {

return isVisibility;

}

public void setVisibility(boolean isVisibility) {

this.isVisibility = isVisibility;

}

}

==========================================MainActivity ============================

package cn.bashi.GuessMusic.ui;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.Animation.AnimationListener;

import android.view.animation.AnimationUtils;

import android.view.animation.LinearInterpolator;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

import android.widget.Toast;

import cn.bashi.GuessMusic.R;

import cn.bashi.GuessMusic.model.ButtonWorld;

import cn.bashi.GuessMusic.model.IWorldButtonClickListener;

import cn.bashi.GuessMusic.mui.MyGridView;

import cn.bashi.GuessMusic.util.Util;

public class MainActivity extends Activity {

/** 文字个数*/

public final int WORLD_COUNT = 24;

/** 盘片动画*/

private Animation mPanAnim;

private LinearInterpolator mPanLinear;

/** 拨杆进入动画*/

private Animation mBarInAnim;

private LinearInterpolator mBarInLinear;

/** 拨杆退出动画*/

private Animation mBarOutAnim;

private LinearInterpolator mBarOutLinear;

/** 按键*/

private ImageButton mButtonPlay;

private ImageView mViewPan;

private ImageView mViewBar;

private LinearLayout worldSelectView;

/** 是否动画正在运行*/

private boolean mIsRunning = false;

/** 文字数据*/

private ArrayList ButtonSelectWorlds;

private ArrayList ButtonWorlds;

/** 自定义的控件*/

private MyGridView myGrid;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 盘片

mViewPan = (ImageView) findViewById(R.id.pan);

// 摇杆

mViewBar = (ImageView) findViewById(R.id.bar);

// 按钮

mButtonPlay = (ImageButton) findViewById(R.id.but_play);

// 文字选区

worldSelectView = (LinearLayout) findViewById(R.id.world_select);

myGrid = (MyGridView) findViewById(R.id.mgrid);

myGrid.regestOnWorldButtonClick(new IWorldButtonClickListener(){

@Override

public void onWorldButtonClick(ButtonWorld buttonWorld) {

// TODO 自动生成的方法存根

Toast.makeText(MainActivity.this, buttonWorld.getWorldValue(), 1).show();

}

});

// 初始化动画

mPanAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);

mPanLinear = new LinearInterpolator();

mPanAnim.setInterpolator(mPanLinear);

mPanAnim.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

mViewBar.setAnimation(mBarOutAnim);

mIsRunning = false;

mButtonPlay.setVisibility(View.VISIBLE);

}

});

mBarInAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_45);

mBarInAnim.setFillAfter(true);

mBarInLinear = new LinearInterpolator();

mBarInAnim.setInterpolator(mBarInLinear);

mBarInAnim.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

// 盘片开始转动

mViewPan.startAnimation(mPanAnim);

}

@Override

public void onAnimationRepeat(Animation animation) {

}

});

mBarOutAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_out_45);

mBarOutAnim.setFillAfter(true);

mBarOutLinear = new LinearInterpolator();

mBarOutAnim.setInterpolator(mBarOutLinear);

// 开始按钮

mButtonPlay.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 动画开始

if(!mIsRunning && mViewBar != null){

mIsRunning = true;

mButtonPlay.setVisibility(View.GONE);

mViewBar.startAnimation(mBarInAnim);

}

}

});

LoadUnderView();

}

/** 获取字体的布局*/

public void LoadUnderView(){

// 加载文字选框

LoadWorldSelectView();

// 加载文字待选区

LoadWorldView();

}

/** 加载文字选框*/

public void LoadWorldSelectView(){

ButtonSelectWorlds = getWorldsSelectData();

for(int n = 0; n < ButtonSelectWorlds.size(); n++){

worldSelectView.addView(ButtonSelectWorlds.get(n).getViewButtonWorld(), new LayoutParams(140, 140));

}

}

/** 加载文字待选区*/

public void LoadWorldView(){

ButtonWorlds = getWorldsData();

// 加载数据

myGrid.updateData(ButtonWorlds);

}

@Override

protected void onPause() {

mViewPan.clearAnimation();

super.onPause();

}

/** 获取文字数据*/

public ArrayList getWorldsSelectData(){

ButtonSelectWorlds = new ArrayList();

ButtonWorld worldSelect;

for(int n = 0; n < 4; n++){

worldSelect = new ButtonWorld();

View v = Util.getView(MainActivity.this, R.layout.mygridview_item);

worldSelect.setViewButtonWorld((Button)v.findViewById(R.id.worldBut_item));

worldSelect.getViewButtonWorld().setBackgroundResource(R.drawable.game_wordblank);

worldSelect.getViewButtonWorld().setText("");

ButtonSelectWorlds.add(worldSelect);

}

return ButtonSelectWorlds;

}

/** 获取文字数据*/

public ArrayList getWorldsData(){

ButtonWorlds = new ArrayList();

ButtonWorld World;

for(int n = 0; n < WORLD_COUNT; n++){

World = new ButtonWorld();

World.setWorldValue("好"+n);

ButtonWorlds.add(World);

}

return ButtonWorlds;

}

}

==============================================IWorldButtonClickListener ===============

package cn.bashi.GuessMusic.model;

public interface IWorldButtonClickListener {

public void onWorldButtonClick(ButtonWorld buttonWorld);

}

android动画结束弹出文本框,学完(Android疯狂猜歌 5-2 实现待选文字框点击事件)课程出现的小问题...相关推荐

  1. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  2. c语言获取安卓弹窗,Android实现信息弹出框

    本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下 layout下的dialog_common_layout.xml android:layout_width=&qu ...

  3. css实现的图片悬停旋转弹出文本框html页面前端源码

    大家好,今天给大家介绍一款,css实现的图片悬停旋转弹出文本框html页面前端源码(图1).送给大家哦,获取方式在本文末尾. 图1 当鼠标经过图片的时候,就会激活旋转和文本弹出事件,非常适合用在图片展 ...

  4. android 弹出框带标题栏,Android微信右上角弹出的对话选择框实现

     Android微信右上角弹出的对话选择框实现 我在之前的文章中曾给出了一个开源的微信UI大体实现方案具体代码实现,参见附录文章1.本文单单挑出一个微信的UI实现点:微信右上角弹出的选择对话框.如 ...

  5. Android EditText不弹出输入法焦点问题的总结

    同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...

  6. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

  7. android 盒子输入法不弹出来,Android EditText不弹出输入法焦点问题的总结

    看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMod ...

  8. (转)Android软键盘弹出,界面整体上移

    原地址:http://blog.csdn.net/u011622479/article/details/51161717 在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,an ...

  9. Android 软键盘弹出时布局内指定内容上移实现及问题解决

    Android 软键盘弹出时布局内指定内容上移实现及问题解决 参考文章: (1)Android 软键盘弹出时布局内指定内容上移实现及问题解决 (2)https://www.cnblogs.com/as ...

最新文章

  1. 一个浙江商人立下的22条军规(转载)
  2. VS2010项目生成时提示错误“在证书存储区中找不到清单签名证书”?
  3. 从零单排学Redis【白银】
  4. 市值十亿美金公司的五个特点
  5. 参数等效模型可以用于_盘式永磁涡流驱动器的电磁温度耦合解析模型
  6. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
  7. spring 之 import标签、alias标签、beans标签 解析
  8. hive内表和外表区别(转载+自己整理)
  9. win32 destroywindow函数
  10. asp.net 404页面
  11. RSA加密解密及RSA加签验签
  12. Matlab遗传算法工具箱(gaot)下载及安装
  13. iOS集成 Paypal 贝宝支付
  14. python apply函数的用法_python apply函数
  15. 羊皮卷之七 我要笑遍世界
  16. Ada的故事(转自互联网)
  17. 将时间序列转成图像——格拉姆角场方法 Matlab实现
  18. python制作ppt动画_天呐,还能这么玩!用 Python 生成动态 PPT
  19. 12月18日科技资讯|支付宝、微信回应3D面具破解人脸识别;ofo 否认「发币」;Kafka 2.4.0 发布
  20. 做移动网站还是移动应用程序?

热门文章

  1. FPGA信号处理系列文章——CRC运算的实现
  2. 转载:Tim O'Reilly与John Battelle谈即将开幕的Web
  3. 参考 史料揭秘:美曾计划攻打以色列
  4. 如何画出天天动听那样的待机歌词显示?
  5. Clickhouse Explain
  6. 地震勘探基础(四)之地震干扰波
  7. [bzoj 4976]宝石镶嵌
  8. ANDROID PAD模拟器设置
  9. excel xml mysql数据库,数据库文本文档excel表格-excel xml格式的文件 导入到 MYSQL 数据库的语句...
  10. html5点击复制文本框内容,js实现点击按钮复制文本功能