如何给checkbox创建setOnCheckedChangeListener

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给checkbox创建setOnCheckedChangeListener相关的知识,希望对你有一定的参考价值。

参考技术A public class LocationActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.locationmain);
ListView listview = (ListView) findViewById(R.id.listView1);
String selectQuery = "SELECT * FROM " + DatabaseHandler.TABLE_LOCATIONLABLES;
SQLiteDatabase db = new DatabaseHandler(this).getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
final List<String> locLables = new ArrayList<String>();
if(cursor != null)
if (cursor.moveToFirst())
do
locLables.add(cursor.getString(1));

while (cursor.moveToNext());


//String[] locLables = new String[] "Home","University","Office";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.locationmain_entry,R.id.textView12, locLables);
//cb gives a null pointer exception
CheckBox cb = (CheckBox) listview.findViewById(R.id.checkBox12);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener()
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
// TODO Auto-generated method stub
if(isChecked)
System.out.println("selected");
else if(!isChecked)
System.out.println("not selected");


);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), locLables.get(arg2), Toast.LENGTH_SHORT).show();

);


解决方案:
你可以保持独立的 adpater 类,那样就可以实现
public class bsAdapter extends BaseAdapter

Activity cntx;
public bsAdapter(Activity context)

// TODO Auto-generated constructor stub
this.cntx=context;



public int getCount()

// TODO Auto-generated method stub
return listview_arr.length;


public Object getItem(int position)

// TODO Auto-generated method stub
return listview_arr[position];


public long getItemId(int position)

// TODO Auto-generated method stub
return listview_array.length;


public View getView(final int position, View convertView, ViewGroup parent)

View row=null;

LayoutInflater inflater=cntx.getLayoutInflater();
row=inflater.inflate(R.layout.search_list_item, null);

TextView tv=(TextView)row.findViewById(R.id.title);
CheckBox cb=(CheckBox)row.findViewById(R.id.cb01);

tv.setText(listview_arr[position]);

cb.setOnClickListener(new OnClickListener()

public void onClick(View v)

if(cb.ischecked)

//ur code


else //ur code


);

return row;

本回答被提问者和网友采纳
参考技术B 可以保持独立的 adpater 类,那样就可以实现
[java] view plaincopy
public class bsAdapter extends BaseAdapter

Activity cntx;
public bsAdapter(Activity context)

// TODO Auto-generated constructor stub
this.cntx=context;



public int getCount()

// TODO Auto-generated method stub
return listview_arr.length;


public Object getItem(int position)

// TODO Auto-generated method stub
return listview_arr[position];


public long getItemId(int position)

// TODO Auto-generated method stub
return listview_array.length;


public View getView(final int position, View convertView, ViewGroup parent)

View row=null;

LayoutInflater inflater=cntx.getLayoutInflater();
row=inflater.inflate(R.layout.search_list_item, null);

TextView tv=(TextView)row.findViewById(R.id.title);
CheckBox cb=(CheckBox)row.findViewById(R.id.cb01);

tv.setText(listview_arr[position]);

cb.setOnClickListener(new OnClickListener()

public void onClick(View v)

if(cb.ischecked)

//ur code


else //ur code


);

return row;

以上是关于如何给checkbox创建setOnCheckedChangeListener的主要内容,如果未能解决你的问题,请参考以下文章

C#中 如何给Datagridview添加一列checkbox

如何在JSP对checkbox的value赋值

extjs grid 中 如何根据数据动态给checkbox赋值

extjs grid 中 如何根据数据动态给checkbox赋值

如何给TreeView中的每一项加上可复选框的CheckBox?

如何从动态创建的 CheckBox 中获取选定的值?