Android Listview+;复选框
我正在尝试使用复选框执行listview,但无法执行。 我不知道如何实现侦听器,该侦听器告诉我是否选择了ckeckbox 我在这里留下了我的代码,如果有人知道如何实现侦听器,并且可以帮助我 这是列表中每个项目的代码:Android Listview+;复选框,android,listview,checkbox,onclicklistener,Android,Listview,Checkbox,Onclicklistener,我正在尝试使用复选框执行listview,但无法执行。 我不知道如何实现侦听器,该侦听器告诉我是否选择了ckeckbox 我在这里留下了我的代码,如果有人知道如何实现侦听器,并且可以帮助我 这是列表中每个项目的代码: public class TemaRescatado { protected String tema; protected long id; protected Boolean selected = false; public TemaR
public class TemaRescatado {
protected String tema;
protected long id;
protected Boolean selected = false;
public TemaRescatado(String tema2, long id) {
super();
this.tema = tema2;
this.id = id;
}
public TemaRescatado(String tema2) {
super();
this.tema = tema2;
}
public String getTema() {
return tema;
}
public void setTema(String tema1) {
this.tema = tema1;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
以下是适配器的代码:
public class AdapterGenerales extends BaseAdapter {
protected Activity activity;
protected ArrayList<TemaRescatado> items;
public AdapterGenerales() {
// TODO Auto-generated constructor stub
}
public AdapterGenerales(Activity activity, ArrayList<TemaRescatado> items) {
this.activity = activity;
this.items = items;
}
public int getCount() {
return items.size();
}
public Object getItem(int arg0) {
return items.get(arg0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Generamos una convertView por motivos de eficiencia
View v = convertView;
//Asociamos el layout de la lista que hemos creado
if(convertView == null){
LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inf.inflate(R.layout.item_gen, null);
}
// Creamos un objeto directivo
TemaRescatado temaResc = items.get(position);
//Rellenamos el listview de temas
TextView iden = (TextView) v.findViewById(R.id.textView1);
iden.setText(temaResc.getTema());
// Retornamos la vista
return v;
}
@Override
public long getItemId(int position) {
return items.get(position).getId();
}
}
公共类适配器通用扩展BaseAdapter{
受保护的活动;
受保护的ArrayList项;
公共适配器通用类(){
//TODO自动生成的构造函数存根
}
公共适配器通用(活动、阵列列表项){
这个。活动=活动;
这个项目=项目;
}
public int getCount(){
返回items.size();
}
公共对象getItem(int arg0){
返回项目。获取(arg0);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//缺乏效率的动力
视图v=转换视图;
//阿索西亚莫斯·埃勒布图(Asociamos el la lista que hemos creado)
if(convertView==null){
LayoutInflater inf=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=inf.FLAME(R.layout.item_gen,空);
}
//直截了当的奶油
TemaRescatado temaResc=items.get(位置);
//雷勒纳莫斯埃利斯特马斯酒店
TextView iden=(TextView)v.findViewById(R.id.textView1);
iden.setText(temaResc.getTema());
//拉维斯塔酒店
返回v;
}
@凌驾
公共长getItemId(int位置){
return items.get(position.getId();
}
}
这是活动的代码:
public class SeleccionTest extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seleccion_test);
ListView lista = (ListView) findViewById(R.id.listView1);
final ArrayList<TemaRescatado> arraydirGen = new ArrayList<TemaRescatado>();
TemaRescatado temaRescGen;
temaRescGen = new TemaRescatado("General1",1);
arraydirGen.add(temaRescGen);
temaRescGen = new TemaRescatado("General2",2);
arraydirGen.add(temaRescGen);
temaRescGen = new TemaRescatado("General3",3);
arraydirGen.add(temaRescGen);
temaRescGen = new TemaRescatado("General4",4);
arraydirGen.add(temaRescGen);
temaRescGen = new TemaRescatado("General5",5);
arraydirGen.add(temaRescGen);
temaRescGen = new TemaRescatado("General6",6);
arraydirGen.add(temaRescGen);
final AdapterGenerales adapter = new AdapterGenerales(this, arraydirGen);
lista.setAdapter(adapter);
lista.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("Seleccionado - Listener", "pos: "+position +" id:"+id);
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.seleccion_test, menu);
return true;
}
}
public类selectiontest扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u seleccion\u test);
ListView lista=(ListView)findViewById(R.id.listView1);
最终ArrayList arraydirGen=新ArrayList();
TemaRescatado temaRescGen;
temaRescGen=新的TemaRescatado(“一般1”,1);
arraydirGen.add(temaRescGen);
temaRescGen=新的TemaRescatado(“一般2”,2);
arraydirGen.add(temaRescGen);
temaRescGen=新的TemaRescatado(“一般3”,3);
arraydirGen.add(temaRescGen);
temaRescGen=新的TemaRescatado(“一般4”,4);
arraydirGen.add(temaRescGen);
temaRescGen=新的TemaRescatado(“一般5”,5);
arraydirGen.add(temaRescGen);
temaRescGen=新的TemaRescatado(“一般6”,6);
arraydirGen.add(temaRescGen);
最终适配器通用适配器=新适配器通用适配器(此为arraydirGen);
setAdapter(适配器);
setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
Log.i(“selectionado-Listener”,“pos:+position+”id:+id”);
返回true;
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.SELECION\u测试,菜单);
返回true;
}
}
_gen.xml项:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox1"
android:layout_alignBottom="@+id/checkBox1"
android:layout_toRightOf="@+id/checkBox1"
android:text="@string/vacia" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="50dp"
android:text="@string/vacia" />
</RelativeLayout>
查看本教程,它解释了listView中的支架模式 还请记住,您需要在适配器的getView()方法中指定任何onClickListener或onCheckListener在
getView(…)
中,您必须使用try to use
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.checkBox1);
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
TemaRescatado element = (TemaRescatado) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
}
});
您在哪里声明了复选框?您可以发布item_gen.xml内容吗?为此,您应该使用ViewHolder模式。我没有声明复选框,因为我无法获取单击的项目。我将编辑问题以放置xml文件。请选中此链接…有一个很好的示例