`
sunsz
  • 浏览: 42183 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在使用simpleadapter下在list当中添加一个button的消息响应

阅读更多

如果在一个list的item当中添加一个button,需要注意以下几点:

 

1.要在xml文件当中给button设置两个属性 

android:focusable="false"   
android:clickable="true"

 如果不对button设置这两个属性,那么button就会抢夺该item的焦点,你的item就点不动了。如果我们想点击item是点击item效果,点击button是点击button效果,那么在button的属性中加上这两条就ok。

 

我用的是simpleadapter。需要先对是不是button先进行判断,代码如下:

 

 

listadapter.setViewBinder(new ViewBinder(){

			@Override
			public boolean setViewValue(View view, Object data , String textRepresentation) {
				// TODO Auto-generated method stub
				
				if(view instanceof Button)
				{
					Button button=(Button)view;					
					return true;
				}
				return false;
			}
        	
        });

 

 

然后就是给button设置响应时间了,首先我们要继承adapter的getview方法。

代码如下:

 

      listadapter=new SimpleAdapter(this,newlist ,R.layout.user,new String[]{"title","group","photo","username"},new int []{R.id.title,R.id.group,R.id.photo,R.id.username}){

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
				if(convertView==null){
				convertView=View.inflate(HTTPRequestActivity.this, R.layout.user, null);
				}
				final Button button=(Button)convertView.findViewById(R.id.group);
		        button.setOnClickListener(new OnClickListener(){

					@Override
					public void onClick(View arg0) {
						// TODO Auto-generated method stub
						String groupname=(String)button.getText();
						
					}
		        });
	return super.getView(position, convertView, parent);
			}
        	
        };
 

 

在里面就可以添加消息响应了,注意:这个button的消息响应不能定义在oncreate()函数当中,是因为button是定义在item的布局文件当中的,所以所有item中的button共用一个button,其id相同,如果定义在oncreate中,就相当于给每一个item的button都定义。这是不可能的,根本无法获取其button对象,所以会报空指针错。只有在getview中得到button对象。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics