【发布时间】:2016-09-25 10:47:33
【问题描述】:
我有一个带有RecyclerView 和Sqlite 的应用程序,我使用DialogFragment 将数据插入到表中,当我在RecyclerView 上的项目中单击longclick 时,我会显示另一个Dialog,它有一个删除按钮,但我无法捕捉到我点击它的项目的ID,知道吗?
这是删除方法:
public void deleteARow(int idA)
{
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TODO_TABLE, id + "=" + idA, null);
db.close();
}
这是 RecyclerView 适配器:
public void onBindViewHolder(final RecyclerAdapter.ViewHolder holder, final int position) {
final ToDoModule appShowModule = dbList.get( position );
holder.Title.setText(dbList.get(position).getActionTitle());
holder.Desc.setText(dbList.get(position).getActionDesc());
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
FragmentTransaction fragmentTransaction = ((AppCompatActivity)context).getSupportFragmentManager().beginTransaction();
actionOption actionOption = new actionOption();
actionOption.show(fragmentTransaction,"fragment_edit_name");
return true;
}
});}
这是删除按钮点击
public void onClick(View view) {
ToDoModule to = new ToDoModule();
db.deleteARow(to.getId());
Toast.makeText(getContext(), "delete", Toast.LENGTH_SHORT).show();
}
这是从数据库表中获取数据的方法
public List<ToDoModule> getDataFromDB(){
List<ToDoModule> modelList = new ArrayList<ToDoModule>();
String query = "select * from "+ TODO_TABLE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
ToDoModule model = new ToDoModule();
String Title = cursor.getString(cursor.getColumnIndex(COLUMN_Title));
String Description = cursor.getString(cursor.getColumnIndex(COLUMN_Des));
int ID = (cursor.getColumnIndex(id));
model.setActionTitle(Title);
model.setActionDesc(Description);
model.setId(ID);
modelList.add(model);
}while (cursor.moveToNext());
}
return modelList;
}
【问题讨论】:
标签: android sqlite android-recyclerview