RadioButton listView实现
2015-07-06 11:46
281 查看
class RadioAdapter extends BaseAdapter {
private Context context;
private List<HashMap<String, Object>> userList;
public RadioAdapter(Context context, ArrayList<HashMap<String, Object>> mListItems)
{
this.context = context;
this.userList= mListItems;
}
@Override
public int getCount() {
return userList.size();
}
@Override
public Object getItem(int position) {
return userList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.set_rline_list_item, null);
holder = new ViewHolder();
holder.background = (RelativeLayout) convertView.findViewById(R.id.rline_list_item);
holder.userName = (TextView) convertView.findViewById(R.id.title_line);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}
final RadioButton radio=(RadioButton) convertView.findViewById(R.id.radio_btn);
holder.rdBtn = radio;
holder.userName.setText((String)userList.get(position).get("Title"));
//当RadioButton被选中时,将其状态记录进States中,并更新其他RadioButton的状态使它们不被选中
/* holder.rdBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//重置,确保最多只有一项被选中
for(String key:states.keySet()){
states.put(key, false);
}
states.put(String.valueOf(position), radio.isChecked());
RlineAdapter.this.notifyDataSetChanged();
}
}); */
boolean res=false;
if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){
res=false;
states.put(String.valueOf(position), false);
}
else
res = true;
holder.rdBtn.setChecked(res);
return convertView;
}
class ViewHolder {
RelativeLayout background;
TextView userName;
RadioButton rdBtn;
}
}
更新RadioButton的状态:
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
final RadioButton radio=(RadioButton) arg1.findViewById(R.id.radio_btn);
//重置,确保最多只有一项被选中
for(String key:states.keySet()){
states.put(key, false);
}
states.put(String.valueOf(position), radio.isChecked()?false:true);
setObject("rlineStates",states);
mAdapter.notifyDataSetChanged();
}
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rline_list_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip" >
<TextView
android:id="@+id/title_line"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:textSize="22sp"
android:textColor="@color/white"
/>
<RadioButton
android:id="@+id/radio_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/title_line"
android:layout_alignParentRight="true"
android:focusable="false" //否则将覆盖item的click事件
android:clickable="false"
android:padding="0dp"/>
</RelativeLayout>
private Context context;
private List<HashMap<String, Object>> userList;
public RadioAdapter(Context context, ArrayList<HashMap<String, Object>> mListItems)
{
this.context = context;
this.userList= mListItems;
}
@Override
public int getCount() {
return userList.size();
}
@Override
public Object getItem(int position) {
return userList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.set_rline_list_item, null);
holder = new ViewHolder();
holder.background = (RelativeLayout) convertView.findViewById(R.id.rline_list_item);
holder.userName = (TextView) convertView.findViewById(R.id.title_line);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}
final RadioButton radio=(RadioButton) convertView.findViewById(R.id.radio_btn);
holder.rdBtn = radio;
holder.userName.setText((String)userList.get(position).get("Title"));
//当RadioButton被选中时,将其状态记录进States中,并更新其他RadioButton的状态使它们不被选中
/* holder.rdBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//重置,确保最多只有一项被选中
for(String key:states.keySet()){
states.put(key, false);
}
states.put(String.valueOf(position), radio.isChecked());
RlineAdapter.this.notifyDataSetChanged();
}
}); */
boolean res=false;
if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){
res=false;
states.put(String.valueOf(position), false);
}
else
res = true;
holder.rdBtn.setChecked(res);
return convertView;
}
class ViewHolder {
RelativeLayout background;
TextView userName;
RadioButton rdBtn;
}
}
更新RadioButton的状态:
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
final RadioButton radio=(RadioButton) arg1.findViewById(R.id.radio_btn);
//重置,确保最多只有一项被选中
for(String key:states.keySet()){
states.put(key, false);
}
states.put(String.valueOf(position), radio.isChecked()?false:true);
setObject("rlineStates",states);
mAdapter.notifyDataSetChanged();
}
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rline_list_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip" >
<TextView
android:id="@+id/title_line"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:textSize="22sp"
android:textColor="@color/white"
/>
<RadioButton
android:id="@+id/radio_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/title_line"
android:layout_alignParentRight="true"
android:focusable="false" //否则将覆盖item的click事件
android:clickable="false"
android:padding="0dp"/>
</RelativeLayout>
相关文章推荐
- C++学习小结之二进制转换
- Java中图片压缩处理
- 什么理论?人与人之间的关系
- js添加收藏夹
- C# 执行多条SQL更新语句,实现数据库事务
- OC与Swift混编
- Apache中解决动态地址跳转死循环的方法
- Tomcat Server.xml详解
- UVA 253 Cube painting
- LeetCode——Power of Two
- 转:Json序列化和反序列化
- js 切换图片
- 超大数据量存储常用数据库分表分库算法总结
- Android ListView存在多个item样式的处理方法
- struts2的体系结构
- C\C++把TXT文件读入内存
- STM32之I2C
- lombok如何做的冗余代码消除。
- min3d引擎使用指南(Android)<一>
- 【mysql】mysql 小数转换成百分数查出(保留两位小数百分数)以及怎么使select中嵌套if的使用