- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Android 应用程序,该应用程序显示一系列卡片,其中包含存储在本地 SQLite 数据库中的一些信息(在主 fragment 中)。
喜欢 this 中的 Matteo问题,我已经实现了一个自定义回收器适配器( GitHub link ),以及一个用于滑动的自定义监听器( SwipeableRecyclerView ),但面临一些不同的问题。当我刷我的 carview 项目时,它会回到它的起始位置,并且可能根本没有删除以前刷过的项目(从与我的回收器适配器一起使用的数据库和回收器 View 中)。
我的数据库助手的代码如下:
public class GeekNotesDatabaseHelper {
static final String DB_NAME = "geeknotes_db";
static final String TABLE = "notes_table";
static final int VERSION = 1;
static final String UID = "_id";
static final String TITLE = "title";
static final String CATEGORY = "category";
private DBHelper dbHelper;
private SQLiteDatabase database;
public GeekNotesDatabaseHelper(Context context) {
dbHelper = new DBHelper(context);
database = dbHelper.getWritableDatabase();
}
public void insertData(String title, String category) {
ContentValues cv = new ContentValues();
cv.put(TITLE, title);
cv.put(CATEGORY, category);
database.insert(TABLE, null, cv);
}
public Cursor getAllData() {
String buildSQL = "SELECT * FROM " + TABLE + " ORDER BY " + UID + " DESC";
return database.rawQuery(buildSQL, null);
}
public void deleteByID(int position) {
database.delete(TABLE, UID + " = " + position, null);
}
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, DB_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE + " (" + UID + " INTEGER " +
"PRIMARY KEY AUTOINCREMENT, " + TITLE + " TEXT, " + CATEGORY + " TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}
}
}
public class GeekNotesAdapter extends CursorRecyclerAdapter<GeekNotesAdapter.ViewHolder> {
private final Fragment fragment;
private OnItemClickListener itemClickListener;
public GeekNotesAdapter(Cursor cursor, Fragment fragment) {
super(cursor);
this.fragment = fragment;
}
@Override
public void onBindViewHolderCursor(ViewHolder holder, Cursor cursor) {
holder.title.setText(
cursor.getString(cursor.getColumnIndexOrThrow(GeekNotesDatabaseHelper.TITLE)).replaceAll("\\<[^>]*>", ""));
holder.category.setText(
cursor.getString((cursor.getColumnIndexOrThrow(GeekNotesDatabaseHelper.CATEGORY))));
holder.id = cursor.getInt(cursor.getColumnIndexOrThrow(GeekNotesDatabaseHelper.UID));
}
@Override
public GeekNotesAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
final LayoutInflater mInflater = LayoutInflater.from(viewGroup.getContext());
final View sView = mInflater.inflate(R.layout.note_item, viewGroup, false);
return new ViewHolder(sView);
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title;
TextView category;
int id;
public ViewHolder(View view) {
super(view);
title = (TextView) view.findViewById(R.id.name);
category = (TextView) view.findViewById(R.id.category);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (itemClickListener != null) {
itemClickListener.onItemClick(v, id);
}
}
}
public interface OnItemClickListener {
public void onItemClick(View view , int position);
}
public void setOnItemClickListener(final OnItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
}
public class GeekNotesFragment extends Fragment {
GeekNotesDatabaseHelper dbHelper;
GeekNotesAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.main_fragment, container, false);
dbHelper = new GeekNotesDatabaseHelper(getActivity());
Bundle bundle = getArguments();
if (bundle != null) {
// String itemTitle = bundle.getString("tag_item_title");
// String itemCategory = bundle.getString("tag_item_category");
Item item = (Item) bundle.getSerializable("note_item");
dbHelper.insertData(item.getName(), item.getCategory());
}
final RecyclerView recyclerList = (RecyclerView) v.findViewById(R.id.itemsInCards);
recyclerList.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerList.setLayoutManager(llm);
setTargetFragment(GeekNotesFragment.this, 0);
adapter = new GeekNotesAdapter(dbHelper.getAllData(), getTargetFragment());
recyclerList.setAdapter(adapter);
SwipeableRecyclerViewTouchListener swipeTouchListener =
new SwipeableRecyclerViewTouchListener(recyclerList, new SwipeableRecyclerViewTouchListener.SwipeListener() {
@Override
public boolean canSwipe(int position) {
return true;
}
@Override
public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
dbHelper.deleteByID(position);
adapter.notifyItemRemoved(position);
}
adapter.notifyDataSetChanged();
}
@Override
public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
dbHelper.deleteByID(position);
adapter.notifyItemRemoved(position);
}
adapter.notifyDataSetChanged();
}
});
recyclerList.addOnItemTouchListener(swipeTouchListener);
FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fab);
fab.attachToRecyclerView(recyclerList);
// fab.setBaselineAlignBottom(true);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, new NewNoteFragment());
ft.addToBackStack(null);
ft.commit();
}
});
return v;
}
}
最佳答案
嗯,这是一个很老的帖子。但我想回答,因为它可以帮助别人。
答案-尝试使用回收站 View 的方法,例如-
关于android - 如何正确删除带有滑动的 CardView? (使用 SQLite 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29047722/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!