在使用simpleadapter下在list当中添加一个button的消息响应
16lz
2021-01-26
如果在一个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(){@Overridepublic boolean setViewValue(View view, Object data , String textRepresentation) {// TODO Auto-generated method stubif(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}){@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif(convertView==null){convertView=View.inflate(HTTPRequestActivity.this, R.layout.user, null);}final Button button=(Button)convertView.findViewById(R.id.group); button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubString groupname=(String)button.getText();} });return super.getView(position, convertView, parent);} };
在里面就可以添加消息响应了,注意:这个button的消息响应不能定义在oncreate()函数当中,是因为button是定义在item的布局文件当中的,所以所有item中的button共用一个button,其id相同,如果定义在oncreate中,就相当于给每一个item的button都定义。这是不可能的,根本无法获取其button对象,所以会报空指针错。只有在getview中得到button对象。
更多相关文章
- macOS系统下搭建Android开发环境
- Android杂识
- Android(安卓)属性动画(Property Animation)完全解析 (下)
- Android自定义控件之测量onMeasure
- URI数据匹配
- Android(安卓)JNI代码
- Android基础之Android动画
- Android(安卓)的 system property service
- Android获取短信session