您的位置:首页 > 移动开发 > Android开发

ANDROID笔记:ListView和CheckBox的简单使用

2013-10-17 09:56 375 查看


package com.example.adaptertest;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到listview
ListView listView = (ListView) findViewById(R.id.list);
// 加载数据
String[] strings = getResources().getStringArray(R.array.list);
// arrayadapter适配器

// ArrayAdapter<String> adapter = new ArrayAdapter<String>(
// MainActivity.this, R.layout.list_item_1, strings);
// listView.setAdapter(adapter);
//

// simpleadapter适配器
/*
* List<Map<String, String>> objList = new ArrayList<Map<String,
* String>>(); Map<String, String> map = new HashMap<String, String>();
* map.put("id", "1"); map.put("name", "zhansan"); map.put("sex", "男");
*
* Map<String, String> map1 = new HashMap<String, String>();
* map1.put("id", "2"); map1.put("name", "hua"); map1.put("sex", "女");
*
* objList.add(map);
*
* objList.add(map1);
*
* SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,
* objList, R.layout.list_item_2, new String[] { "id", "name", "sex" },
* new int[] { R.id.id, R.id.name, R.id.sex });
* listView.setAdapter(simpleAdapter);
*/
// 自定义Adapter
final CheckBox box = (CheckBox) findViewById(R.id.idcheck);
final List<Student> students = new ArrayList<Student>();
final MyAdapter adapter2 = new MyAdapter(MainActivity.this, students);
students.add(new Student("1", "aa", "男", false));
students.add(new Student("2", "bb", "男", false));
students.add(new Student("3", "cc", "女", false));
Button addButton = (Button) findViewById(R.id.btn_add);
addButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
students.add(new Student((students.size() + 1) + "", "aa", "男",
false));
// 通知适配器更新数据
adapter2.notifyDataSetChanged();
}
});
listView.setAdapter(adapter2);
listView.setSelection(students.size() - 1);
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// 全选
for (Student student : students) {
student.setState(isChecked);
}
// 通知适配器更新数据
adapter2.notifyDataSetChanged();

}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


package com.example.adaptertest;

import java.util.List;

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.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MyAdapter extends BaseAdapter {
private List<Student> list = null;
private LayoutInflater inflater = null;
private View view = null;

public MyAdapter(Context context, List<Student> list) {
this.list = list;
inflater = LayoutInflater.from(context);
}

// 返回listView数据的条数
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// 获取布局
view = inflater.inflate(R.layout.list_item_2, null);
TextView id = (TextView) view.findViewById(R.id.id);
TextView name = (TextView) view.findViewById(R.id.name);
TextView sexTextView = (TextView) view.findViewById(R.id.sex);
final CheckBox box = (CheckBox) view.findViewById(R.id.check);
final Student student = list.get(position);
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
student.setState(isChecked);
}
});
// 控件和数据的匹配
id.setText(student.getId());
name.setText(student.getName());
sexTextView.setText(student.getSexString());
box.setChecked(student.isState());
return view;
}

}


package com.example.adaptertest;

public class Student {
private String id;
private String name;
private String sexString;
private boolean state;

public Student(String id, String name, String sexString, boolean state) {
super();
this.id = id;
this.name = name;
this.sexString = sexString;
this.state = state;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSexString() {
return sexString;
}

public void setSexString(String sexString) {
this.sexString = sexString;
}

public boolean isState() {
return state;
}

public void setState(boolean state) {
this.state = state;
}

}


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<LinearLayout
android:id="@+id/linear"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<CheckBox
android:id="@+id/idcheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="添加" />

<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/btn_add"
android:layout_below="@id/linear" >
</ListView>

</RelativeLayout>


list_item_2.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="50dp"
android:orientation="horizontal" >

<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />

<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />

<TextView
android:id="@+id/sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1" />

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: