java - 使用自定义适配器更新 SQL 数据库和 ArrayList<>。

标签 java android arraylist adapter

我在 mainactivity 中使用 Switch 按钮并使用 CustonAdapter 来填充数据。我想要的是,当我关闭开关按钮时,数据应该从我的 SQL 数据库以及自定义数组列表中更改,因为我在自定义适配器中使用数组列表进行数据处理。 这是我的自定义适配器代码

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int position = (Integer) buttonView.getTag();
    Object object = getItem(position);
    DataModel dataModel = (DataModel) object;
    Context context  = buttonView.getContext();

    if (isChecked){
        MessageDbHelper mDbHelper = new MessageDbHelper(context);
        SQLiteDatabase db = mDbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(MessageEntry.COLUMN_STATUS_CHECK, MessageEntry.DAY_ON);
        db.update(MessageEntry.TABLE_NAME,values,MessageEntry._ID + "=?",new String[]
                {String.valueOf(buttonView.getTag())});
        notifyDataSetChanged();
    } else {
        MessageDbHelper mDbHelper = new MessageDbHelper(context);
        SQLiteDatabase db = mDbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(MessageEntry.COLUMN_STATUS_CHECK, MessageEntry.DAY_OFF);
        db.update(MessageEntry.TABLE_NAME,values,MessageEntry._ID + "=?",new String[]
                {String.valueOf(buttonView.getTag())});
        remove(dataModel); // here i was trying to change datamodel also remove is just for checking but not working
        notifyDataSetChanged();
    }
}

private static class ViewHolder {
    TextView txtName;
    TextView txtTime;
    TextView txtRepeat;
    Switch msgSwitch;
}

public CustomAdapter(ArrayList<DataModel> data, Context context) {
    super(context, R.layout.fields, data);
    this.dataSet = data;
    this.mContext = context;
}


@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    DataModel dataModel = getItem(position);

    ViewHolder viewHolder;

    final View result;

    if (convertView == null) {

        viewHolder = new ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.fields, parent, false);
        viewHolder.txtName = (TextView) convertView.findViewById(R.id.name);
        viewHolder.txtTime = (TextView) convertView.findViewById(R.id.txtTime);
        viewHolder.txtRepeat = (TextView) convertView.findViewById(R.id.repeat);
        viewHolder.msgSwitch = (Switch) convertView.findViewById(R.id.MessageSwitch);

        result = convertView;

        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
        result = convertView;
    }

    viewHolder.txtName.setText(dataModel.getPersonName());
    viewHolder.txtTime.setText(dataModel.getTime());
    viewHolder.txtRepeat.setText(dataModel.getRepeat());
    viewHolder.msgSwitch.setChecked(dataModel.getStatus());


    return convertView;
}

这是我的数据模型数组列表

public class DataModel implements Serializable{
String name;
String time;
String repeat;
boolean check;

public DataModel(String name, String time, String repeat, boolean check) {
    this.name = name;
    this.time = time;
    this.repeat = repeat;
    this.check = check;
}

public String getPersonName() {
    return name;
}
public String getTime() {
    return time;
}
public String getRepeat() {
    return repeat;
}
public boolean getStatus() {
    return check;
}}

最佳答案

关于java - 使用自定义适配器更新 SQL 数据库和 ArrayList<>。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45254886/

相关文章:

android - Gradle connectedAndroidTest 返回错误

android - 如何在 CircularProgressIndicator 处于 Activity 状态时禁用交互?

java - 如何在处理过程中将类添加到数组列表中?

java - 在数组 :O 中获取数组中的最后一个对象

java - DOS 批处理文件在专有 java 应用程序中输入命令并接收反馈?

java - gettext() 空指针异常

android - 在谷歌日历Android中为开始日期和结束日期之间的所有日期添加事件

java - Java中的Mysql : Data truncated for column 'AAL' at row 1 error

java - 使用 supercsv 的 CSV header 验证

java - 在 .nextDouble 中输入非数字时如何修复用户输入错误?