打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java-更新与数据库行相对应的ListView行中的CheckBox

我已经在自定义布局的CheckBox上设置了android:focusable =“ false”.我的后端SQLite数据库取决于是否选中了CheckBox. ListView中的每一行都对应于数据库中的一行.所以我的问题是,我应该在哪里放置CheckBox的OnClickListener,以便可以更新与该ListView行关联的项目?我需要将其放置在我可以访问ID的位置.也许onListItemClick?

更新:
这是我的自定义适配器:

package com.mohit.geo2do.adapters;import java.text.SimpleDateFormat;import java.util.Calendar;import android.content.Context;import android.database.Cursor;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.CursorAdapter;import android.widget.Filterable;import android.widget.TextView;import com.mohit.geo2do.R;import com.mohit.geo2do.provider.Task.Tasks;import com.mohit.geo2do.utils.Util;public class TasksAdapter extends CursorAdapter {    private final Context context;    public TasksAdapter(Context context, Cursor c) {        super(context, c);        this.context = context;    }    @Override    public View newView(Context context, Cursor cursor, ViewGroup parent) {        //Inflate the view         LayoutInflater inflater = LayoutInflater.from(context);        View v = inflater.inflate(R.layout.row_item, parent, false);                return v;    }    @Override    public void bindView(View view, Context context, Cursor cursor) {        CheckBox checkbox = (CheckBox)view.findViewById(R.id.completed);        TextView due_date = (TextView)view.findViewById(R.id.due_date);        String title = cursor.getString(cursor.getColumnIndex(Tasks.TITLE));        boolean completed = Util.intToBool(cursor.getInt(cursor.getColumnIndex(Tasks.COMPLETED)));        SimpleDateFormat format = new SimpleDateFormat("EEEEEE, MMM dd yyyy hh:mm aa");        long unixTime = cursor.getLong(cursor.getColumnIndex(Tasks.DUE_DATE));        Calendar due = Util.timestampToDate(unixTime);        due_date.setText(format.format(due.getTime()));        checkbox.setText(title);        checkbox.setChecked(completed);    }}

解决方法:

当我做类似的事情时,我创建了一个SimpleCursorAdapter并为其创建了一个ViewBinder.

在viewbinder的setViewValue()中,如果视图是Checkbox的实例,则为该复选框添加setOnCheckedChangeListener,以更新后端数据库.如果您需要更多信息,请告诉我.

也许如果您向我展示如何构造SimpleCursorAdapter,那么我可以向您展示如何进一步发展.

public void bindView(View view, Context context, Cursor cursor) {        CheckBox checkbox = (CheckBox)view.findViewById(R.id.completed);        TextView due_date = (TextView)view.findViewById(R.id.due_date);        String title = cursor.getString(cursor.getColumnIndex(Tasks.TITLE));        boolean completed = Util.intToBool(cursor.getInt(cursor.getColumnIndex(Tasks.COMPLETED)));        SimpleDateFormat format = new SimpleDateFormat("EEEEEE, MMM dd yyyy hh:mm aa");        long unixTime = cursor.getLong(cursor.getColumnIndex(Tasks.DUE_DATE));        Calendar due = Util.timestampToDate(unixTime);        due_date.setText(format.format(due.getTime()));        checkbox.setText(title);        checkbox.setChecked(completed);        // edit here ..        checkbox.setOnCheckedChangeListener(         new CompoundButton.OnCheckedChangeListener() {          public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {          // update your value in the db        });

}

来源:https://www.icode9.com/content-2-590251.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Creating a custom CursorAdapter for ListView ...
android 获取通讯录所有字段
一步步实现一个城市选择器
一起学Android之ContentProvider
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(conten...
Android 中 DownLoadManager 实现文件下载
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服