自己定义ListView就要自己写个LIstviewAdapter继承BaseAdapter这个类然后通过其中的getView()方法把数据映射到相应控件之中
下面是我实现的带单选框的listView(如果是想带按钮实现更简单,就不需要考虑单选框的按钮特性了)
在做的过程之中出现了点击item无响应的情况,最后发现是子控件radioButton获得了焦点是其父控件即item失去了焦点所以在getView ()之中让RadioButton失去焦点即可
先放个效果图
代码如下
package com.example.mylistview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.TextView;
public class MyListViewWithRadio extends Activity implements OnItemClickListener {
private ListView listView;
private List<Map<String, Object>> mData;
//record the current checked radio number
private int checkedIndex = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mData = getData();
listView = new ListView(this);
MyAdapter myAdapter = new MyAdapter(this);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(this);
setContentView(listView);
}
//获取要在list中显示的数据
private List&l

本文介绍了如何在Android中创建一个自定义的ListView,使其每个列表项包含一个单选框。在实现过程中遇到点击列表项无响应的问题,原因是RadioButton获取了焦点导致ListView无法响应点击。解决方案是在getView()方法中设置RadioButton失去焦点,从而确保列表项点击事件正常工作。
最低0.47元/天 解锁文章
800

被折叠的 条评论
为什么被折叠?



