点击ListView的Button修改Button本身的背景
来源:互联网 发布:ps cc mac中文破解版 编辑:程序博客网 时间:2024/09/21 06:33
注意事项:点击了一次Button之后,ListView的焦点会失去,从而点击ListView会没有反应,需要在List的Item添加android:descendantFocusability="blocksDescendants".
Demo下载地址:点击打开链接
效果图:
activity:
package com.example.listviewbuttondemo;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.content.Context;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.widget.ListView;public class LampSwitchActivity extends FragmentActivity {ArrayList<Map<String, Object>> mData;Context context;@Overrideprotected void onCreate(Bundle arg0) {super.onCreate(arg0);context = this;init();}//初始化private void init() {setContentView(R.layout.lampswitch_main);mData = new ArrayList<Map<String,Object>>();putData(); ListView listView = (ListView)findViewById(R.id.lampList);LampSwithAdapter lampSwithAdapter = new LampSwithAdapter(context, mData);listView.setAdapter(lampSwithAdapter);}//添加List数据。void putData(){for (int i = 0; i <15; i++) {Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "Lamp"+i); map.put("isOpen", false); mData.add(map);} }}
adapter:
package com.example.listviewbuttondemo;import java.util.ArrayList;import java.util.List;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageButton;import android.widget.TextView;public class LampSwithAdapter extends BaseAdapter{public List<Map<String, Object>> mData; private LayoutInflater mInflater; Context context; public LampSwithAdapter(Context context,ArrayList<Map<String, Object>> mData) { this.context =context; this.mInflater = LayoutInflater.from(context); this.mData = mData; } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;} @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } //点击Button时,更改状态,如果灯开着则改成灯关着。 public void turnOnOff(int position) {Boolean boolean1 =(Boolean)(mData.get(position).get("isOpen"));mData.get(position).put("isOpen", !boolean1);//更改完数据,需要刷新一下。this.notifyDataSetChanged();} @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; MyClockListener myClockListener=null; if (convertView == null) { holder=new ViewHolder(); //可以理解为从vlist获取view 之后把view返回给ListView convertView = mInflater.inflate(R.layout.lampswitch_listview_item, null); holder.name = (TextView)convertView.findViewById(R.id.lampswitch_listview_item_name); holder.viewBtn = (ImageButton)convertView.findViewById(R.id.lampswitch_listview_item_btn); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.name.setText((String)mData.get(position).get("name")); holder.isOpen = (Boolean) mData.get(position).get("isOpen"); holder.viewBtn.setTag(position); //给Button添加单击事件 添加Button之后ListView将失去焦点 需要在ListView的Item布局上设置永远焦点。 //给Button设置正确的图片 if (holder.isOpen) { holder.viewBtn.setBackgroundResource(R.drawable.onlamp); }else { holder.viewBtn.setBackgroundResource(R.drawable.offlamp); } myClockListener=new MyClockListener(position,holder); holder.viewBtn.setOnClickListener( myClockListener); return convertView; } class MyClockListener implements OnClickListener{ int mPosition; ViewHolder viewHolder; //在这里为了方便,我设置了参数Position和holder,这样方便一点。 public MyClockListener(int inPosition,ViewHolder viewHolder){ mPosition= inPosition; this.viewHolder= viewHolder; } //v.getTag()可以也可以获取到holder,因为之前设置了tag。但我这里没用。@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (viewHolder.isOpen) {((ImageButton)v).setBackgroundResource(R.drawable.offlamp);}else {((ImageButton)v).setBackgroundResource(R.drawable.onlamp);}turnOnOff(mPosition);} } final public class ViewHolder { public TextView name; public Boolean isOpen; public ImageButton viewBtn; } }
0 0
- 点击ListView的Button修改Button本身的背景
- Android中ListView的Button点击
- ListView中Button的点击事件
- 含有Button的ListView不能点击问题
- ListView中Button的点击事件冲突
- MFC修改button的颜色、背景、边框
- MFC修改button的颜色、背景、边框
- MFC修改button的颜色、背景、边框
- ListView中的Button点击后相应的Item改变背景颜色
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- ListView中添加Button后,Button的点击事件和ListView的点击事件冲突
- Button的点击事件
- Button的点击事件
- Button的点击倒计时
- Button的点击事件
- Button的点击事件
- 互联网产品设计实践
- 轻型读写锁(Slim read write lock)
- linux打包压缩命令汇总
- WebService详解
- hdoj 4888 Redraw Beautiful Drawings 【最大流满流+唯一性判断】
- 点击ListView的Button修改Button本身的背景
- android开发 drawable中XML
- wireshark过滤器规则
- 比较两个文件夹内同名文件内容是否相同
- POJ 1011 Sticks(经典dfs)
- iOS ARC机制 weak strong(delegate为weak引用)
- go语言资料整理
- php验证手机号是否正确
- 有关c/c++中位域的疑问