我有一个Android应用程序,可以将SQLite database
到MySQL
远程数据库中的数据同步,这些数据显示在RecyclerView
中。现在,我想删除SQLiteDatabase
和RecyclerView
中的数据。
我搜索谷歌已经有四天没有成功,请不要给我一个stackoverflow链接,请我已经在这里提出所有问题,但没有人帮助过我。
以下是我的数据库代码:
package cm.mavis.easytravel.Provider_Formulaire;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import cm.mavis.easytravel.ui_Formulaire.Item;
/**
* Clase envoltura para el gestor de Bases de datos
*/
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase database;
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public void onCreate(SQLiteDatabase database) {
createTable(database); // Crear la tabla "gasto"
}
/**
* Crear tabla en la base de datos
*
* @param database Instancia de la base de datos
*/
public void createTable(SQLiteDatabase database) {
String cmd = "CREATE TABLE " + ContractParaGastos.GASTO + " (" +
ContractParaGastos.Columnas._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ContractParaGastos.Columnas.MONTO + " TEXT, " +
ContractParaGastos.Columnas.PRENOM + " TEXT, " +
ContractParaGastos.Columnas.ETIQUETA + " TEXT, " +
ContractParaGastos.Columnas.DESTINATION + " TEXT, " +
ContractParaGastos.Columnas.PLACES + " TEXT, " +
ContractParaGastos.Columnas.FECHA + " TEXT, " +
ContractParaGastos.Columnas.DESCRIPCION + " TEXT," +
ContractParaGastos.Columnas.ID_REMOTA + " TEXT UNIQUE," +
ContractParaGastos.Columnas.ESTADO + " INTEGER NOT NULL DEFAULT "+ ContractParaGastos.ESTADO_OK+"," +
ContractParaGastos.Columnas.PENDIENTE_INSERCION + " INTEGER NOT NULL DEFAULT 0)";
database.execSQL(cmd);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try { db.execSQL("drop table " + ContractParaGastos.GASTO); }
catch (SQLiteException e) { }
onCreate(db);
}
}
这是我的recyclerAdapter:
package cm.mavis.easytravel.ui_Formulaire;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.bumptech.glide.Glide;
import com.github.ivbaranov.mfb.MaterialFavoriteButton;
import cm.mavis.easytravel.Provider_Formulaire.ContractParaGastos;
import cm.mavis.easytravel.Provider_Formulaire.DatabaseHelper;
import cm.mavis.easytravel.R;
public class AdaptateurFormulaire extends RecyclerView.Adapter<AdaptateurFormulaire.ViewHolder> {
private Cursor cursor;
static Context context;
public class ViewHolder extends RecyclerView.ViewHolder{
// Campos respectivos de un item
private TextView nom, agence, date,prenom, depart, destination,place;
private boolean isButtonClicked = false;
ImageButton button1;
public ViewHolder(View v) {
super(v);
nom = v.findViewById(R.id.monto);
agence = v.findViewById(R.id.etiqueta);
date = v.findViewById(R.id.date);
prenom = v.findViewById(R.id.prenom1);
depart = v.findViewById(R.id.depart1);
destination = v.findViewById(R.id.destination1);
place = v.findViewById(R.id.place1);
button1 = v.findViewById(R.id.supprimer);
/*************************************************************************************
* @Permet de changer la couleur de l'etoile pour mettre une reservation comme favoris
*************************************************************************************/
final ImageButton button = v.findViewById(R.id.etoile);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isButtonClicked){
button.setImageResource(R.drawable.ic_star_white_24dp);
}else {
button.setImageResource(R.drawable.ic_star_yellow_24dp);
}
isButtonClicked = !isButtonClicked;
}
});
}
}
public AdaptateurFormulaire(Context context) {
this.context = context;
}
@Override
public int getItemCount() {
if (cursor!=null)
return cursor.getCount();
return 0;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.item_layout, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(AdaptateurFormulaire.ViewHolder viewHolder, int i) {
cursor.moveToPosition(i);
String nom;
String date;
String agence;
String prenom;
String place;
String destination;
String depart;
prenom = cursor.getString(2);
place = cursor.getString(5);
depart = cursor.getString(4);
destination= cursor.getString(7);
agence = cursor.getString(3);
nom = cursor.getString(1);
date = cursor.getString(6);
viewHolder.nom.setText(agence);
viewHolder.agence.setText(nom);
viewHolder.date.setText(date);
viewHolder.prenom.setText(prenom);
viewHolder.depart.setText(depart);
viewHolder.destination.setText(destination);
viewHolder.place.setText(place);
viewHolder.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
public void swapCursor(Cursor newCursor) {
cursor = newCursor;
notifyDataSetChanged();
}
public Cursor getCursor() {
return cursor;
}
}
这是我的MainActivity:
package cm.mavis.easytravel.ui_Formulaire;
import android.app.ActivityOptions;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import cm.mavis.easytravel.Provider_Formulaire.DatabaseHelper;
import cm.mavis.easytravel.R;
import cm.mavis.easytravel.Provider_Formulaire.ContractParaGastos;
import cm.mavis.easytravel.Sync_Formulaire.SyncAdapter;
import cm.mavis.easytravel.ui.*;
import cm.mavis.easytravel.utils_Formulaire.Utilidades;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements
LoaderManager.LoaderCallbacks<Cursor>,
NavigationView.OnNavigationItemSelectedListener{
private AdaptateurFormulaire adapter;
private TextView emptyView;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
/*les3 petites bars en haut a guache de la toolbar qui permet d'ouvrir ou de fermer le viewpager*/
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
//le viewpager
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.reciclador);
databaseHelper = new DatabaseHelper(this, ContractParaGastos.GASTO, null, 4);
recyclerView.setHasFixedSize(true);
adapter = new AdaptateurFormulaire(this);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
emptyView = (TextView) findViewById(R.id.recyclerview_data_empty);
getSupportLoaderManager().initLoader(0, null, this);
SyncAdapter.inicializarSyncAdapter(this);
}
/*le boutton flotant qui permet d'acceder au formulaire*/
public void onClickFab(View v) {
Intent intent = new Intent(this, cm.mavis.easytravel.ui_Formulaire.InsertActivity.class);
if (Utilidades.materialDesign())
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
else startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
SyncAdapter.sincronizarAhora(this, false);
return true;
}
return super.onOptionsItemSelected(item);
}
/*******************************************************************************************************
* @Drawer Navigation
* Ici on configure tout le menu du drawer afin que chaque vue selectionné sois correctement configuré
* et permette a l'utilidateur d'accédé a des vue minicieusement preparé
* Menu de gauche qui permet ausx users d'effectuer differentes actions
*******************************************************************************************************/
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
/**********************************************************
* @Nous permet de donner des information aux utilisateurs *
* *******************************************************/
if (id == R.id.infos_utiles) {
Intent intent = new Intent(MainActivity.this, Agences.class);
startActivity(intent);
/************************************************************
* @Permet a l'utilisateur d'en savoir plus a propos de nous *
* *********************************************************/
}else{
if (id == R.id.aPropos){
Intent intent = new Intent(MainActivity.this, APropos.class);
startActivity(intent);
}
/***********************************************************************
* @permet a l'utilisateur de partager l'application avec ses contacts *
* ********************************************************************/
}
if (id == R.id.partager)
try{
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Easy Travel");
String sAux = "\nJe vous recommande cette application géniale\n\n";
sAux = sAux + "https://play.google.com/store/details?id=Orion.soft \n\n";
intent.putExtra(Intent.EXTRA_TEXT, sAux);
startActivity(Intent.createChooser(intent, ""));
}catch (Exception e) {
/****************************************************
* @Permet a l'utilisateur de parametré son interface *
* *************************************************/
}else{
if (id == R.id.parametre){
Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent);
/******************************************************
* @permet a envoyé des notifications aux utilisateurs
* ****************************************************/
}else {
if (id == R.id.notifications) {
Intent intent = new Intent(MainActivity.this, Notifications.class);
startActivity(intent);
/*******************************************************
* @permet deremplir la section des informations utiles
*******************************************************/
}else {
if (id == R.id.infos_utiles) {
Intent intent = new Intent(MainActivity.this, ScrollingActivity.class);
startActivity(intent);
/*************************
* @la section Mon Voyage
*************************/
}else {
if (id == R.id.mon_voyage){
Intent intent = new Intent(MainActivity.this, MonVoyage.class);
startActivity(intent);
}
}
}
}
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
emptyView.setText("Bienvenu sur EasyLife...");
// Consultar todos los registros
return new CursorLoader(this, ContractParaGastos.CONTENT_URI, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
adapter.swapCursor(data);
emptyView.setText("");
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}
如何修改我的代码以删除SQLiteDatabase
和RecyclerView
中的数据?