效果图如下:
源码如下:
MainActivity.java:
package com.google.activity;
import com.google.R;
import com.google.adapter.MainAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity implements OnClickListener{
private ListView listView;
private Button btnSelectAll, btnUnSelectAll;
private MainAdapter adapter;
@Override
public void onCreate(Bundle b){
super.onCreate(b);
setContentView(R.layout.main);
init();
initAdapter();
addAdapter();
addListener();
}
private void init(){
listView = (ListView)this.findViewById(R.id.listview_main);
btnSelectAll = (Button)this.findViewById(R.id.button_main_selectall);
btnUnSelectAll = (Button)this.findViewById(R.id.button_main_unselectall);
}
private void initAdapter(){
adapter = new MainAdapter(this);
}
private void addAdapter(){
listView.setAdapter(adapter);
}
private void addListener(){
btnSelectAll.setOnClickListener(this);
btnUnSelectAll.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_main_selectall:
adapter.setListCheckStatus(true);
adapter.notifyDataSetChanged();
break;
case R.id.button_main_unselectall:
adapter.setListCheckStatus(false);
adapter.notifyDataSetChanged();
break;
}
}
}
MainAdapter.java:
package com.google.adapter;
import java.util.ArrayList;
import java.util.List;
import com.google.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
public class MainAdapter extends BaseAdapter {
public Context context;
private LayoutInflater layoutInflater;
private int listSize = 21;
private List<Boolean> listCheckStatus;
public MainAdapter(Context context){
this.context = context;
layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
listCheckStatus = new ArrayList<Boolean>(listSize);
for(int i=0;i<listSize;i++){
listCheckStatus.add(false);
}
}
static class ViewHolder{
private ImageView img;
private TextView title;
private CheckBox cb;
}
public List<Boolean> getListCheckStatus(){
return listCheckStatus;
}
public void setListCheckStatus(Boolean boo){
for(int i=0;i<listSize;i++){
listCheckStatus.set(i, boo);
}
}
@Override
public int getCount() {
return listSize;
}
@Override
public Object getItem(int position) {
return listCheckStatus.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
Boolean checkStatus = listCheckStatus.get(position);
convertView = layoutInflater.inflate(R.layout.main_list_item, null);
viewHolder = new ViewHolder();
viewHolder.cb = (CheckBox)convertView.findViewById(R.id.main_list_item_cb);
viewHolder.img = (ImageView)convertView.findViewById(R.id.main_list_item_icon);
viewHolder.title = (TextView)convertView.findViewById(R.id.main_list_item_title);
switch(position%3){
case 0:viewHolder.img.setBackgroundResource(R.drawable.flower);
viewHolder.title.setText("花朵...");
break;
case 1:viewHolder.img.setBackgroundResource(R.drawable.cattle);
viewHolder.title.setText("大牛...");
break;
case 2:viewHolder.img.setBackgroundResource(R.drawable.light);
viewHolder.title.setText("灯泡...");
break;
}
viewHolder.cb.setId(position);
viewHolder.cb.setChecked(checkStatus);
viewHolder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
listCheckStatus.set(buttonView.getId(), isChecked);
notifyDataSetChanged();
}});
return convertView;
}
}
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:background="#ffffff">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<Button android:id="@id/button_main_selectall" android:text="@string/selectall" android:textColor="#000000"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="16.0dip" />
<Button android:id="@id/button_main_unselectall" android:text="@string/unselectall" android:textColor="#000000"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="16.0dip" />
</LinearLayout>
<ListView android:id="@id/listview_main"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@null" android:background="@drawable/anim_list_back"/>
</LinearLayout>
main_list_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@id/main_list_item_icon" android:layout_width="66.0dip"
android:layout_height="66.0dip" android:contentDescription="@string/left"/>
<TextView android:id="@id/main_list_item_title" android:layout_width="wrap_content" android:textColor="#ffff00"
android:layout_toRightOf="@id/main_list_item_icon" android:layout_height="wrap_content" android:layout_centerVertical="true"/>
<CheckBox android:id="@id/main_list_item_cb" android:layout_width="wrap_content"
android:layout_alignParentRight="true" android:layout_height="wrap_content" android:layout_centerVertical="true"/>
</RelativeLayout>
源码免费下载地址:http://download.youkuaiyun.com/detail/xuweilinjijis/5185996