大佬教程收集整理的这篇文章主要介绍了android – 从sqlite删除项目后,RecyclerView不会更新?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是我的代码
SecondActivity.java
import android.support.v7.app.AppCompatActivity; import android.os.bundle; 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 java.util.ArrayList; import java.util.List; public class SecondActivity extends AppCompatActivity { DatabaseHelpher Helpher; List<DatabaseModel> dbList; RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_second); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); Helpher = new DatabaseHelpher(this); dbList= new ArrayList<DatabaseModel>(); dbList = Helpher.getDataFromDB(); mRecyclerView = (RecyclerView)findViewById(R.id.recycleview); mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new linearlayoutmanager(this); mRecyclerView.setLayoutManager(mLayoutManager); // specify an adapter (see also next examplE) mAdapter = new RecyclerAdapter(this,dbList); mRecyclerView.setAdapter(mAdapter); mAdapter.notifyDataSetChanged (); } @Override public Boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_second,menu); return true; } @Override public Boolean onOptionsItemSELEcted(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSELEcted(item); } }
DatabaseHelpher.java
import android.content.ContentValues; import android.content.Context; import android.database.cursor; import android.database.sqlite.sqliteDatabase; import android.database.sqlite.sqliteOpenHelper; import android.util.Log; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class DatabaseHelpher extends sqliteOpenHelper { private static final String DATABASE_NAME="student"; private static final int DATABASE_VERSION = 1; private static final String stuDENT_TABLE = "stureg"; private static final String stu_TABLE = "create table "+stuDENT_TABLE +"(@R_39_4687@T,email TEXT priMary key,roll TEXT,address TEXT,branch TEXT)"; Context context; public DatabaseHelpher(Context context) { super(context,DATABASE_NAME,null,DATABASE_VERSION); this.context = context; } @Override public void onCreate(sqliteDatabase db) { db.execsql(stu_TABLE); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { db.execsql("drop table IF EXISTS " + stuDENT_TABLE); // create tables again onCreate(db); } /* Insert into database*/ public void inserTintoDB(String name,String email,String roll,String address,String branch){ Log.d("insert","before insert"); // 1. get reference to writable DB sqliteDatabase db = this.getWritableDatabase(); // 2. create ContentValues to add key "column"/value ContentValues values = new ContentValues(); values.put("name",Name); values.put("email",email); values.put("roll",roll); values.put("address",address); values.put("branch",branch); // 3. insert db.insert(stuDENT_TABLE,values); // 4. close db.close(); Toast.makeText(context,"insert value",Toast.LENGTH_LONG); Log.i("insert into DB","After insert"); } /* Retrive data from database */ public List<DatabaseModel> getDataFromDB(){ List<DatabaseModel> modelList = new ArrayList<DatabaseModel>(); String query = "SELEct * from "+stuDENT_TABLE; sqliteDatabase db = this.getWritableDatabase(); cursor cursor = db.rawQuery(query,null); if (cursor.moveToFirst()){ do { DatabaseModel model = new DatabaseModel(); model.setName(cursor.getString(0)); model.setEmail(cursor.getString(1)); model.setRoll(cursor.getString(2)); model.setAddress(cursor.getString(3)); model.setBranch(cursor.getString(4)); modelList.add(model); }while (cursor.moveToNext()); } Log.d("student data",modelList.toString()); return modelList; } /*delete a row from database*/ public void deleteARow(String email){ sqliteDatabase db= this.getWritableDatabase(); db.delete(stuDENT_TABLE,"email" + " = ?",new String[] { email }); db.close(); } }
DatabaseModel.java
public class DatabaseModel { private String name; private String roll; private String address; private String branch; private String email; public String getName() { return name; } public void setName(String Name) { this.name = name; } public String getRoll() { return roll; } public void setRoll(String roll) { this.roll = roll; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getBranch() { return branch; } public void setBranch(String branch) { this.branch = branch; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
RecyclerAdapter.java
import android.content.Context; import android.content.Intent; import android.os.bundle; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { static List<DatabaseModel> dbList; static Context context; static DatabaseHelper dh; RecyclerAdapter(Context context,List<DatabaseModel> dbList ){ this.dbList = new ArrayList<DatabaseModel>(); this.context = context; this.dbList = dbList; dh=new DatabaseHelper(context); } @Override public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewTypE) { View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate( R.layout.item_row,null); // create viewHolder ViewHolder viewHolder = new ViewHolder(itemLayoutView); return viewHolder; } @Override public void onBindViewHolder(RecyclerAdapter.ViewHolder holder,int position) { holder.name.setText(dbList.get(position).getName()); holder.email.setText(dbList.get(position).getEmail()); } @Override public int getItemCount() { return dbList.size(); } public static class ViewHolder extends RecyclerView.ViewHolder implements View.onClickListener { public TextView name,email; public ViewHolder(View itemLayoutView) { super(itemLayoutView); name = (TextView) itemLayoutView .findViewById(R.id.rvName); email = (TextView)itemLayoutView.findViewById(R.id.rvemail); itemLayoutView.setOnClickListener(this); } @Override public void onClick(View v) { dh.delete(dbList.get(getAdapterPosition()).getEmail); Toast.makeText(RecyclerAdapter.context,"you have clicked Row " + getAdapterPosition(),Toast.LENGTH_LONG).show(); } } }
我试图使用mAdapter.notifyDataSetChanged()更新recyclerview;但它对我不起作用.请给我打电话.谢谢
以上是大佬教程为你收集整理的android – 从sqlite删除项目后,RecyclerView不会更新?全部内容,希望文章能够帮你解决android – 从sqlite删除项目后,RecyclerView不会更新?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。