1、item布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants" > <ImageView android:id="@+id/iv_add_xuan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/address_xuanzhong" android:layout_gravity="center_vertical" android:layout_marginLeft="15dp" android:visibility="gone" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:layout_marginLeft="15dp" android:layout_marginBottom="10dp" android:layout_marginRight="15dp" > <TextView android:id="@+id/sh_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textSize="16sp" /> <TextView android:id="@+id/sh_phoen" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机号" android:layout_marginLeft="15dp" android:textSize="16sp" android:layout_marginRight="10dp" /> <TextView android:id="@+id/tv_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/sh_name" android:textColor="@color/txt_gray" android:layout_marginTop="20dp" android:textSize="14sp" android:text="地址" /> <ImageView android:id="@+id/iv_bianji" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/bianji" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:visibility="gone" /> <TextView android:id="@+id/tv_bianji" android:layout_below="@+id/tv_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="编辑" android:layout_alignParentRight="true" android:layout_marginTop="22dp" android:layout_marginRight="10dp" /> <TextView android:id="@+id/tv_delete" android:layout_toLeftOf="@+id/tv_bianji" android:layout_below="@+id/tv_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" android:layout_marginTop="22dp" android:layout_marginRight="10dp" /> <RadioButton android:id="@+id/radiobutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设为默认" android:layout_alignParentLeft="true" android:layout_below="@+id/tv_address" android:layout_marginTop="14dp" android:layout_marginLeft="-5dp" /> </RelativeLayout> </LinearLayout>
2、Activity布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/title" layout="@layout/title"/> <ListView android:id="@+id/shouhuo_listview" android:layout_below="@+id/title" android:layout_above="@+id/rl_add" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </RelativeLayout>
3、 ListView的Adapter代码
public class ShouHuoAdapter extends BaseAdapter { private Context context; private ArrayList<ShouHuoBean.ListBean> list; public HashMap<String,Boolean> states=new HashMap<String,Boolean>();//记录所有radiobutton被点击的状态 public ShouHuoAdapter(Context context, ArrayList<ShouHuoBean.ListBean> list){ this.context=context; this.list=list; } @Override public int getCount() { return list==null?0:list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view=null; ViewHolder hoder=null; if(convertView==null){ hoder=new ViewHolder(); view=View.inflate(context, R.layout.item_shouhuo,null); hoder.sh_name= (TextView) view.findViewById(R.id.sh_name); hoder.sh_phoen= (TextView) view.findViewById(R.id.sh_phoen); hoder.tv_address= (TextView) view.findViewById(R.id.tv_address); hoder.tv_bianji= (TextView) view.findViewById(R.id.tv_bianji); hoder.iv_xuanzhong= (ImageView) view.findViewById(R.id.iv_add_xuan); hoder.tv_delete= (TextView) view.findViewById(R.id.tv_delete); hoder.radiobutton= (RadioButton) view.findViewById(R.id.radiobutton); view.setTag(hoder); }else{ view = convertView; hoder = (ViewHolder) view.getTag();//??ViewHolder?? } hoder.sh_name.setText(list.get(position).getName()+" "+list.get(position).getSex()); hoder.sh_phoen.setText(list.get(position).getPhone()); hoder.tv_address.setText(list.get(position).getAddress()); hoder.tv_bianji.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context, Add_AddressActivity.class); intent.putExtra("id",list.get(position).getId()); intent.putExtra("name",list.get(position).getName()); intent.putExtra("sex",list.get(position).getSex()); intent.putExtra("phone",list.get(position).getPhone()); intent.putExtra("address",list.get(position).getAddress()); context.startActivity(intent); } }); hoder.tv_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialogToDel(position); } }); final ViewHolder finalHoder1 = hoder; hoder.radiobutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearStates(position); getNetWorkToMoRen(list.get(position).getId()); finalHoder1.radiobutton.setChecked(getStates(position)); //刷新数据,调用getView刷新ListView notifyDataSetChanged(); } }); boolean res=false; if(getStates(position)==null||getStates(position)==false)//判断当前位置的radiobutton点击状态 { res=false; setStates(position, false); }else{ res=true; } hoder.radiobutton.setChecked(res); return view; } //用于在activity中重置所有的radiobutton的状态 public void clearStates(int position){ // 重置,确保最多只有一项被选中 for(String key:states.keySet()){ states.put(key,false); } states.put(String.valueOf(position), true); } //用于获取状态值 public Boolean getStates(int position){ return states.get(String.valueOf(position)); } //设置状态值 public void setStates(int position,boolean isChecked){ states.put(String.valueOf(position),false); } /** * 确定删除对话框 */ private void showDialogToDel(final int position) { final Dialog dialog = new Dialog(context, R.style.dialog); View view_dialog = LayoutInflater.from(context).inflate( R.layout.dialog_delete, null); TextView tv_ok= (TextView) view_dialog.findViewById(R.id.tv_ok); tv_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { delete(position); dialog.dismiss(); } }); TextView tv_cancle= (TextView) view_dialog.findViewById(R.id.tv_cancle); tv_cancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.setContentView(view_dialog); Window dialogWindow = dialog.getWindow(); //设置位置 dialogWindow.setGravity(Gravity.CENTER); //设置dialog的宽高属性 dialogWindow.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); dialog.show(); } /** * 删除信息 */ private void delete(final int position) { String url = XTools.SERVICE_ROOT+"useraddress/dodel"; RequestParams params = new RequestParams(url); params.addParameter("id",list.get(position).getId()); XTools.request(HttpMethod.POST, params, new XTools.CallbackAdapter() { @Override public void onSuccess(String s) { try { JSONObject jsonobject=new JSONObject(s); int code=jsonobject.getInt("code"); if(code==200){ Message msg=new Message(); msg.what=1; msg.obj=position; handler.sendMessage(msg); } } catch (JSONException e) { e.printStackTrace(); } } }); }
/*默认地址*/
private void getNetWorkToMoRen(int id) { String url = XTools.SERVICE_ROOT+"useraddress/dodefault"; RequestParams params = new RequestParams(url); params.addParameter("id",id); XTools.request(HttpMethod.POST, params, new XTools.CallbackAdapter() { @Override public void onSuccess(String s) { try { JSONObject jsonobject=new JSONObject(s); int code=jsonobject.getInt("code"); if(code==200){ Toast.makeText(context,"保存成功",Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } }); } Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 1: int position= (int) msg.obj; list.remove(position); notifyDataSetChanged(); break; } } }; class ViewHolder{ public TextView sh_name; public TextView sh_phoen; public TextView tv_address; public TextView tv_bianji; public ImageView iv_xuanzhong; public RadioButton radiobutton; public TextView tv_delete; } }4、ListView设置Adapter
adapter=new ShouHuoAdapter(ShouHuoActivity.this,bean.getList()); shouhuo_listview.setAdapter(adapter);5、刚进界面默认选中没并没有设置,可以根据需求更改代码