Android-如何使ListView中的复选框工作?

Android-如何使ListView中的复选框工作?,android,listview,checkbox,android-listview,android-checkbox,Android,Listview,Checkbox,Android Listview,Android Checkbox,我试图在活动中放置一个listview,然后从我的sqlite数据库中检索数据。然后,用户可以选中/取消选中该列表视图中的多个选项,该列表视图包含显示客户名称的复选框。。选中该复选框后,我希望在用户选中的sqlite数据库中的表中执行诸如向特定客户添加费用之类的功能。问题是,我创建了每一行都带有复选框的listView,但是我被绊倒了,因为我不知道如何对它执行函数。有人能带我到这里吗?或者告诉我怎么做?谢谢 以下是我的listView代码: public class AddExpense ext

我试图在活动中放置一个listview,然后从我的sqlite数据库中检索数据。然后,用户可以选中/取消选中该列表视图中的多个选项,该列表视图包含显示客户名称的复选框。。选中该复选框后,我希望在用户选中的sqlite数据库中的表中执行诸如向特定客户添加费用之类的功能。问题是,我创建了每一行都带有复选框的listView,但是我被绊倒了,因为我不知道如何对它执行函数。有人能带我到这里吗?或者告诉我怎么做?谢谢

以下是我的listView代码:

public class AddExpense extends ListActivity implements OnClickListener{

EditText expenseName;
Spinner expenseType;
EditText expensePrice;
EditText expenseQuantity;
EventController controller = new EventController(this);
Button btnadd;
ListView lv;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addexpense);
    expenseName = (EditText)findViewById(R.id.expenseName);
    expenseType = (Spinner)findViewById(R.id.expenseType);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.type, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    expenseType.setAdapter(adapter);
    expensePrice = (EditText)findViewById(R.id.expensePrice);
    expenseQuantity = (EditText)findViewById(R.id.expenseQuantity);
    btnadd = (Button)findViewById(R.id.btnaddexp);
    btnadd.setOnClickListener(this);

    HashMap<String, String> queryValues = new HashMap<String, String>();
    Intent objIntent = getIntent();
    String eventId = objIntent.getStringExtra("eventId");
    queryValues.put("eventId", eventId);

    //Create Listview that retrieve all the customer data in that event
    ArrayList<HashMap<String, String>> friendList = controller
            .getAllFriends(queryValues);
    if (friendList.size() != 0) {
        lv = getListView();
    }
    SimpleAdapter adapter1 = new SimpleAdapter(AddExpense.this,
            friendList, R.layout.view_expenses_participant_entry, new String[] {
                    "friendId", "friendName" },
            new int[] { R.id.friendId, R.id.friendName});
    adapter.notifyDataSetChanged();
    setListAdapter(adapter1);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    HashMap<String, String> queryValues = new HashMap<String, String>();
    Intent objIntent = getIntent();
    String eventId = objIntent.getStringExtra("eventId");
    queryValues.put("eventId", eventId);
    queryValues.put("expenseName", expenseName.getText().toString());
    queryValues.put("expenseType", expenseType.getSelectedItem().toString());
    queryValues.put("expensePrice", expensePrice.getText().toString());
    queryValues.put("expenseQuantity", expenseQuantity.getText().toString());
    controller.insertExpense(queryValues);
    this.callHomeActivity(v);
    finish();
}

public void callHomeActivity(View view) {
    super.onResume();
}
公共类AddExpense扩展ListActivity实现OnClickListener{
编辑文本支出名称;
旋转式;
编辑文本费用价格;
编辑文本支出数量;
EventController=新的EventController(此);
按钮btnadd;
ListView lv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.addexpense);
expenseName=(EditText)findViewById(R.id.expenseName);
expenseType=(微调器)findViewById(R.id.expenseType);
//使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.type、android.R.layout.simple\u微调器\u项);
//指定显示选项列表时要使用的布局
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//将适配器应用于微调器
expenseType.setAdapter(适配器);
expensePrice=(EditText)findViewById(R.id.expensePrice);
expenseQuantity=(EditText)findViewById(R.id.expenseQuantity);
btnadd=(按钮)findviewbyd(R.id.btnaddexp);
btnadd.setOnClickListener(此);
HashMap queryValues=新HashMap();
Intent objIntent=getIntent();
字符串eventId=objIntent.getStringExtra(“eventId”);
queryValues.put(“eventId”,eventId);
//创建在该事件中检索所有客户数据的Listview
ArrayList friendList=控制器
.getAllFriends(查询值);
如果(friendList.size()!=0){
lv=getListView();
}
SimpleAdapter适配器1=新SimpleAdapter(AddExpense.this,
friendList,R.layout.view\u expenses\u participant\u条目,新字符串[]{
“friendId”、“friendName”},
新的int[]{R.id.friendId,R.id.friendName});
adapter.notifyDataSetChanged();
setListAdapter(适配器1);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
HashMap queryValues=新HashMap();
Intent objIntent=getIntent();
字符串eventId=objIntent.getStringExtra(“eventId”);
queryValues.put(“eventId”,eventId);
queryvalue.put(“expenseName”,expenseName.getText().toString());
queryValues.put(“expenseType”,expenseType.getSelectedItem().toString());
queryvalue.put(“expensePrice”,expensePrice.getText().toString());
queryvalue.put(“expenseQuantity”,expenseQuantity.getText().toString());
controller.insertExpense(查询值);
这项活动(v);
完成();
}
公共void callhome活动(视图){
super.onResume();
}
}

这是每一行的xml文件:

<CheckBox
    android:id="@+id/list_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="false" >
</CheckBox>

<TextView
    android:id="@+id/friendId"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

<TextView
    android:id="@+id/friendName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:paddingLeft="6dip"
    android:paddingTop="6dip"
    android:textColor="#A4C739"
    android:textSize="17sp"
    android:textStyle="bold" />

</LinearLayout>

像ArrayAdapter一样为ListView定制适配器

在该适配器类中,您必须对该类的getView()方法进行编码

在这里,您可以根据单击复选框更新代码。若勾选了复选框,则插入记录;若未勾选,则按需执行


如果您有任何疑问,请告诉我。

请参考此类似问题:您应该使用自定义适配器来执行此操作。您好@iDroidExplorer,谢谢您的回答,但我在将简单适配器转换为自定义适配器时遇到了问题,从自定义适配器检索数据似乎很困难。你能告诉我怎么做吗?谢谢,让我给你一些例子链接。您可以引用它并相应地更新代码。请等待我的最新答复。