如何删除RecyclerView和SQLite数据库中的行?

时间:2017-12-08 13:02:20

标签: android sqlite android-recyclerview android-sqlite

我有一个Android应用程序,可以将SQLite databaseMySQL远程数据库中的数据同步,这些数据显示在RecyclerView中。现在,我想删除SQLiteDatabaseRecyclerView中的数据。

我搜索谷歌已经有四天没有成功,请不要给我一个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);
}

}

如何修改我的代码以删除SQLiteDatabaseRecyclerView中的数据?

0 个答案:

没有答案