阵列插入sqlite帮助程序问题插入

问题描述 投票:0回答:1

我需要帮助,从ArrayList插入数据在sqlite中。

我的代码。

@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 Classs ,这里我留下了sqlite的helper类,如果数组中的数据到达提到的类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) {
}

我的类调用代码进行改造。

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);
}

你能帮助我吗?

java android arrays sqlite retrofit
1个回答
0
投票

改造 onResponse() 取一个匿名的内类rugment,所以里面的任何代码都是指这个内类,因此 this 是指除 context,要想得到一个上下文,只需用 getApplicationContext() 或使用 MyActivity.this.

所以,改变这个

MyHelper helper = new MyHelper(this);

到:

MyHelper helper = new MyHelper(getApplicationContext());

或者是:

MyHelper helper = new MyHelper(MyActivity.this);

改为: MyActivity 与您的活动名称一起环绕您的代码片段。

© www.soinside.com 2019 - 2024. All rights reserved.