数组插入sqlite helper问题insert

Array insert sqlite helper problem insert

我需要帮助,从 ArrayList 向 sqllite 中插入数据

我的代码:

@Override
public void onResponse(Call<List<Campos>> call, Response<List<Campos>> response) {
    if (!response.isSuccessful()){
        mJsonTxtView.setText("Codigo: " + response.code());
        return;
    }
    List<Campos> camposList = response.body();
    for (Campos campos: camposList){
        SQLiteDatabase db = null;
        String content = "";
        String Proyecto= campos.getsProyecto();
        String Nombre = campos.getsNombre();
        String Estado = campos.getsEstado();
        Integer Activo= campos.getnActivo();
        MyHelper helper = new MyHelper(this);
        helper.saveCampos(Proyecto, Nombre, Estado, Activo);
    }

}

MyHelper helper 错误= new MyHelper(this);

error: incompatible types: <anonymous Callback<List<Campos>>> cannot be converted to Context
                    MyHelper helper = new MyHelper(this);

我的助手创建数据库

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE Proyecto (ProyectoId INTEGER PRIMARY KEY AUTOINCREMENT, ZoneName integer,ProyectoName text, ZoneStateId integer, EstadoName text, Codigo text)");
}

我的助手插入函数

public void saveCampos(String proyecto, String nombre, String estado,Integer activo) {
    SQLiteDatabase helper = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(proyecto, proyecto );
    values.put(nombre, nombre );
    values.put(estado, estado );
    values.put(estado, activo );

    helper.insert(proyecto,null, values);
    helper.close();
}

能不能帮帮我,怎么解决才能插入。

MyHelper 类, 这里我留下了sqlite的帮助器class,如果数组中的数据到达提到的class savecampos:

public class MyHelper extends SQLiteOpenHelper {
private Cursor cursorLogs;
private String query = "";
SQLiteDatabase db;
Context context;
public static final String dbname ="datauser.db";
        private static final int version = 1;
public MyHelper(Context context){
    super(context, dbname, null, version);
   }
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE Proyecto (ProyectoId INTEGER PRIMARY KEY AUTOINCREMENT, ZoneName integer,ProyectoName text, ZoneStateId integer, EstadoName text, Codigo text)");}

public void saveCampos(String proyecto, String nombre, String estado, Integer activo) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("proyecto", proyecto );
    values.put("nombre", nombre );
    values.put("estado", estado );
    values.put("activo", activo );
    db.insert(proyecto,null, values);
    db.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}

我的class要改造的调用代码:

public class SplashActivity extends MainActivity {
Context mContext;
private static Context context;
public void onCreate() {
    super.onCreate();
    SplashActivity.context = getApplicationContext();
}
public static Context getAppContext() {
    return SplashActivity.context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    init();
    setContentView(R.layout.activity_splash);
    MyHelper helper = new MyHelper(this);
    SQLiteDatabase database = helper.getReadableDatabase();

    retrofit retrofit = new retrofit();
    retrofit.getCampos();


    // 5 seconds pause on splash page
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            if(isLoggedIn()){
                //Redirect to home page
                intent = new Intent(context,HomeActivity.class);
                startActivity(intent);
                finish();
            }else{
                //Redirect to Login Page
                intent = new Intent(context,LoginActivity.class);
                startActivity(intent);
                finish();
            }
        }
    },5000);
}
public void init() {
    context = this;
    sharedPreferences = context.getSharedPreferences(SHARED_PREF_NAME,MODE_PRIVATE);
}

你能帮帮我吗

Retrofit onResponse() 采用匿名内部 class 参数,因此内部的任何代码都引用此内部 class;因此 this 引用 context 以外的实例,要获取上下文,只需使用 getApplicationContext() 或使用 MyActivity.this.

所以,改变这个

MyHelper helper = new MyHelper(this);

至:

MyHelper helper = new MyHelper(getApplicationContext());

或:

MyHelper helper = new MyHelper(MyActivity.this);

MyActivity 更改为代码段两边的 activity 名称。