Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新SQL数据库和ArrayList<&燃气轮机;使用自定义适配器。_Java_Android_Arraylist_Adapter - Fatal编程技术网

Java 更新SQL数据库和ArrayList<&燃气轮机;使用自定义适配器。

Java 更新SQL数据库和ArrayList<&燃气轮机;使用自定义适配器。,java,android,arraylist,adapter,Java,Android,Arraylist,Adapter,我在mainactivity中使用开关按钮,并使用CustonAdapter填充数据。我想要的是,当我关闭开关按钮时,数据应该从SQLdatabase以及自定义arraylist中更改,因为我在自定义适配器中使用arraylist进行数据处理。 这是我的自定义适配器代码 @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { int position = (Integer

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

@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;
}
看看这个网站,也许可以解决你的问题


查看此网站,也许可以解决您的问题

欢迎使用stackoverflow。stackoverflow通常不鼓励使用仅链接的答案,此答案可能很快就会被删除。也许你可以扩展你的答案,让它在没有链接的情况下仍然有用。欢迎使用stackoverflow。stackoverflow通常不鼓励使用仅链接的答案,此答案可能很快就会被删除。也许你可以扩展你的答案,让它在没有链接的情况下仍然有用。
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;
}}