android通过遍历处理多个按钮点击事件

如果我们有很多的按钮都有点击事件的话,那么单单靠switch case是很麻烦的,因为你需要在每个case后面加上一个R.id.xx。这样的代码看起来不整洁也很麻烦。那么如果我们使用遍历的方法来处理的话就是方便许多。首先我们先来了解一下获取控件id的方式:

1:反射:

try{
 
 Field field=R.drawable.class.getField(type);
 
 int i= field.getInt(new R.drawable());
 
 Log.d(tag,i+"");
 
 return i;
 
}catch(Exception e){
 
 Log.e(tag,e.toString());
 
 return R.drawable.unknow;
 
}

type是一个变量,他的可能值会是“close”、“edit”、“icon”等。我们通过java的反射类Field 去访问 R.drawable 类下面的某个字段。实际上,我们知道在R.drawable 下的字段就是 res.drawable-xxxx 目录下的图片文件的资源id。因此运行上面的这段代码,其实就是通过一个字符串去获取对应图片文件的资源id。比如,当 type 的值为“icon”时,上面的代码会获得res.drawable-xxxx目录下的 icon.png 图片文件的资源id并返回给我们。我们通过资源 id 来把图片显示在ImageView中就是顺理成章的事了。

2、使用Resources 类的 getIdentifier方法

Resources res=getResources();
 
return res.getIdentifier(A1,"id",getPackageName());
第一个是字段,也就是你所要查找的id的ID的名字如 public static final int A1=0x7f09004e;中type的值就是A1,而第二个参数就是所处类的名字,我们知道在R.java中有很多的类,其中包括drawable、id等,而A1在类id中所以所对应的类也就是id了。第三个参数是类的包名,使用
getPackageName()直接返回所在类的包名

在知道如何获取控件的id后那么我们直接上核心代码

public void onClick(View v) {
		 //创建新的线程
		final int id=v.getId();
        new Thread(){
            @Override
            public void run() {//处理耗时间的操作
                super.run();
               senddata(id);
            }
        }.start();	
	}
	//遍历id
	public void senddata(int id){
		Resources res=getResources();
		String are="";
		for(int i=1;i<17;i++){//判断所点击的id与控件中的哪个id相同,若相同则作出相应处理
			if(id==res.getIdentifier("A"+i,"id",getPackageName())){
				are="A"+i;
			}else if(id==res.getIdentifier("B"+i,"id",getPackageName())){
				are="B"+i;
		}else if(id==res.getIdentifier("C"+i,"id",getPackageName())){
			are="C"+i;
	}else if(id==res.getIdentifier("D"+i,"id",getPackageName())){
		are="D"+i;
	}
	}//利用message发送消息
		 Message message = Message.obtain();
	        message.obj=are;
	        mHandler.sendMessage(message);
  }
	//使用handler接收来自message传过来的值
	 Handler mHandler = new Handler(){
	        /**
	         * handleMessage接收消息后进行相应的处理
	         * @param msg
	         */
	        @Override
	        public void handleMessage(Message msg) {
	            super.handleMessage(msg); 
	            Intent intent=new Intent();
	    		intent.setClass(Main.this, MainActivity.class);
	    		intent.putExtra("user",user);
	    		intent.putExtra("area",(String)msg.obj);
	    		startActivity(intent);
	        }
	    };
通过所获取的id来对所有的控件进行判断,然后进行相应处理;
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android多选题的记分数通常是根据题目的难度和答题者的答案来确定的。一般来说,每道题目的分值是相同的,通常为1分或2分。如果答题者回答了所有正确的选项,就可以获得全部分数。如果答案只回答了部分正确的选项,那么获得的分数就会减少。如果答题者选择的选项全部错误,那么该题目将会得到0分。在考试结束后,所有题目的分数将会累加起来,得出考生的总分数。 ### 回答2: 通过以下步骤,可以实现在Android平台上记分的多选题应用。 首先,我们需要创建一个多选题的界面,包括题目和选项。可以使用布局文件来定义界面的样式和布局。在布局文件中,我们可以使用TextView来显示题目,使用CheckBox或RadioButton来显示选项。通过点击不同的选项,可以改变选项的状态。 其次,我们需要定义一个变量来追踪得分,可以将其初始化为0。当用户选择一个正确的选项时,我们可以通过监听选项的点击事件来增加得分。在监听器中,检查所选选项是否与正确答案匹配,如果匹配则增加得分。 接下来,我们可以在界面中添加一个提交按钮,当用户选择了所有答案后,可以点击该按钮来提交答案。在点击提交按钮时,我们可以禁用选项的点击,防止用户在提交后继续选择选项。然后,我们计算用户的得分,并将其显示在界面上。 最后,我们可以添加一些额外的功能,例如倒计时器和重置按钮。通过倒计时器,我们可以限制用户在一定时间内完成题目。当时间到达时,可以自动提交答案并显示得分。通过重置按钮,我们可以清除用户的选择和得分,使用户可以重新开始。 总的来说,通过以上步骤,我们可以在Android平台上实现一个多选题记分应用,用户可以选择选项,并根据选择的正确与否来计算得分,并在界面上显示。 ### 回答3: 要实现Android多选题记分数,可以按照以下步骤进行: 1. 首先,需要创建一个包含多选题的界面。可以使用RecyclerView或ListView来展示题目列表,并为每个题目提供多个选项供用户选择。 2. 在题目对象中,添加一个属性来表示正确答案,并在用户选择答案时进行比对。 3. 在界面中添加一个提交按钮,当用户完成选择后,点击该按钮进行答案的提交。 4. 在提交答案的点击事件中,遍历所有题目对象,判断用户选择的答案是否与正确答案相匹配。 5. 对于每道题目,如果用户选择的答案正确,则为用户加分;反之,不给予加分。 6. 最后,将用户的得分进行展示,可以使用一个Toast或者一个TextView来展示分数。 7. 如果需要保存用户的得分,可以使用SharedPreferences或数据库来进行数据的持久化。 需要注意的是,这只是一种简单的实现方式,如果有更复杂的题目类型或规则,可以根据具体需求进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值