问题标签 [android-cursoradapter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - CursorAdapter 中的 Android ViewHolder 导致 listView 搞砸了
我这几天一直在努力解决这个问题,希望您能帮助我...
我有一个活动,通过设置这样的列表适配器来显示玩家列表:
单击列表中的项目时,将执行此代码,显示一个对话框,其中包含用于编辑和删除玩家的“编辑”和“删除”选项:
根据您的选择(编辑或删除播放器),将执行以下侦听器:
适配器的代码在这里:
现在的问题是,在删除列表中的一些玩家之后,列表就搞砸了,例如。它显示了与实际可用的不同的东西。
我已经做了一些实验,如果我停止在 bindView 中使用 PlayerViewHolder 而是从光标读取文本并将其直接分配给文本字段,那么它就可以工作......所以问题是,为什么我的 ViewHolder 搞砸了???
任何帮助将不胜感激!
谢谢!
- Zyb3r
android - 使用 CursorLoader 在 ListFragment 中查询 SQLite 数据库的最佳实践?
我在我的项目中使用 Android 兼容性库。我已经按照 DevGuide ( http://developer.android.com/reference/android/app/Fragment.html )中的描述设置了 ListFragment ,并使用了一个简单的 CursorLoader Christian 在没有内容提供者的情况下使用 ( CursorLoader 使用没有 ContentProvider)。
问题是,在我的 ListFragment / parent Activity 中,我应该在哪里打开数据库、返回游标、创建适配器和 setListAdapter?
所以在我的应用程序中,我有 TitlesFragment、DetailsFragment、FragmentLayoutActivity、DetailsLayoutActivity。
是最佳实践吗...
在 ListFragment 中打开数据库并在 ListFragment 中
/li>onActivityCreated
关闭它,onDestroy
如下面的代码示例查询数据库并返回光标,并在下面的代码示例中
/li>onCreateLoader
创建适配器和 setListAdapteronLoadFinished
我在正确的轨道上还是应该将其中的一些移到某个地方?谢谢你的时间!
android - 如何使用从主表加载数据的 CursorLoader 从子表中检索数据?
我的应用程序CursorLoader
用于从主表加载数据。数据将在ListView
的帮助下显示CursorAdapter
。ListView 中显示的视图也需要来自子表的数据。表的关系是一对多的。
如果我在查询期间加入两个表,合并的记录将与子记录一样多,因此在 中
ListView
,它将在主表中为一条记录显示多个项目。如果我不加入表,我不确定在
CursorLoader
通过游标传递数据后检索子记录的最佳方法是什么。任何人都可以帮助我吗?
android - 在 android 2.2 中使用光标适配器和内容提供程序的正确方法是什么
我很困惑,我需要你的帮助。我尝试按照 Virgil Dobjanschi 在 Google IO 2010 上的“开发 Android REST 客户端应用程序”讲座中给出的说明进行操作。不幸的是,我找不到在 Content Provider 和 Cursor Adapter 之间实现有效通信的方法。
我在这里遇到的问题与光标适配器有关,所以我们假设内容提供者一切正常。例如,让我们尝试使用 Contacts ContentProvider 而不是我自己的。我尝试了最简单的解决方案——任何 ContentProvider(假设为联系人,由 SDK 提供)和 SimpleCursorAdapter。问题是 SimpleCursorAdapter 包含来自 Contacts 的光标的构造函数已被弃用。文档说:
此构造函数已弃用。
不鼓励使用此选项,因为它会导致在应用程序的 UI 线程上执行游标查询,从而导致响应速度不佳甚至应用程序无响应错误。作为替代方案,将 LoaderManager 与 CursorLoader 一起使用。
我的想法是:“好吧,我不会使用它。我会尝试用 CursorLoader 代替 LoaderManager,因为他们正在建议我。” 所以我去LoaderManager 文档站点查找使用示例以及我发现了什么?使用 SimpleCursorAdapter 构造函数的完美示例。是的,我也想避免因为它已被弃用。
我能找到的所有教程都在使用这个已弃用的构造函数。谁能给我一个很好的答案,避免使用它的正确方法是什么?还是我太在乎它了?我只想学习好的做法...
android - 分页列表和 CursorLoader
我需要实现分页列表,Loader
用于Cursor
从ContentProvider
. 我有页脚,当用户单击它时 - 我需要将下一条记录添加到列表中。
如何刷新列表中的数据,使用Loader
?或者我应该在这里做什么?
android - CursorAdapter 的 ViewBinder 生命周期?
有人可以从方法的角度帮助我理解SimpleCursorAdapter.ViewBinder
生命周期:setViewValue
,bindView
它们何时被调用?实例是否被重用?有什么资料可以理解这一切吗?
我基本上有一个ScrollView
用于setViewValue
填充项目但即使setViewValue
一次又一次调用它也不会刷新视图值。
android - 源数据更改时加载程序不加载数据
Android 文档指出 LOADERS - 它们监控数据源并在内容更改时提供新结果。我已将 CursorAdapter 更改为适用于 SQLite 数据库。
CursorLoader 在带有自定义适配器的 ListFragment 中工作,该适配器扩展了 SimpleCursor Adapter 并在构造函数中传递 FLAG_REGISTER_CONTENT_OBSERVER,但是当列表中使用的响应更改基础数据时,光标确实会更改。
android - android.database.sqlite.SQLiteException:靠近“*”:语法错误:,编译时:SELECT调用._id
我想从电话查询通话记录详细信息,我的查询如下
CallLogAdapter.PROJECTION 包含通话记录的一些字段(列)。
它工作正常,但在以下条件下,它会强制关闭。
条件:-如果拨打的号码以 * 或 # 开头(例如:*1234567 或 #123457)并且号码以 * 结尾(例如:1234567*)
10-14 14:54:50.425:INFO/Database(26307):sqlite 返回:错误代码 = 1,msg = 接近语法错误 10-14 14:54:50.429:错误/DatabaseUtils(26307):将异常写入包裹 10 -14 14:54:50.429: ERROR/DatabaseUtils(26307): android.database.sqlite.SQLiteException: near "*": 语法错误: , 编译时: SELECT _id, number, name, date, duration, new, type FROM调用 WHERE (number = *674088888) ORDER BY date DESC 10-14 14:54:50.429: ERROR/DatabaseUtils(26307): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 10-14 14:54:50.429 :错误/DatabaseUtils(26307):在 android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)10-14 14:54:50.429:错误/DatabaseUtils(26307):在 android.database.sqlite.SQLiteCompiledSql。 (SQLiteCompiledSql.java:65) 10-14 14:54:50.429:错误/DatabaseUtils(26307): 在 android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:83) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 android.database.sqlite.SQLiteQuery.(SQLiteQuery .java:49) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 10-14 14:54:50.429: 错误/DatabaseUtils (26307): 在 android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder. java:330) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 com.android.providers.contacts.CallLogProvider.query(CallLogProvider.java:129) 10-14 14:54:50.429: 错误/ DatabaseUtils(26307):在 android.content。ContentProvider$Transport.bulkQuery(ContentProvider.java:174) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111) 10-14 14:54: 50.429: 错误/DatabaseUtils(26307): 在 android.os.Binder.execTransact(Binder.java:320) 10-14 14:54:50.429: 错误/DatabaseUtils(26307): 在 dalvik.system.NativeStart.run(Native方法)10-14 14:54:50.429:DEBUG/AndroidRuntime(27470):关闭 VM 10-14 14:54:50.429:WARN/dalvikvm(27470):threadid=1:线程退出时未捕获异常(组=0x40015560 ) 10-14 14:54:50.433: ERROR/AndroidRuntime(27470): FATAL EXCEPTION: main 10-14 14:54:50.433: ERROR/AndroidRuntime(27470): android.database.sqlite.SQLiteException: near "*":语法错误: , 编译时: SELECT _id, number, name, date, duration, new,类型 FROM 调用 WHERE (number = *674088888) ORDER BY date DESC 10-14 14:54:50.433: ERROR/AndroidRuntime(27470): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) 10-14 14: 54:50.433: 错误/AndroidRuntime(27470): 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.bulkQueryInternal (ContentProviderNative.java:330) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 10-14 14:54:50.433: 错误/AndroidRuntime (27470): 在 android.content.ContentResolver.query(ContentResolver.java:262)database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 10-14 14:54: 50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.query(ContentProviderNative .java:366) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentResolver.query(ContentResolver.java:262)database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 10-14 14:54: 50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.query(ContentProviderNative .java:366) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentResolver.query(ContentResolver.java:262)错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.query(ContentProviderNative.java :366) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentResolver.query(ContentResolver.java:262)错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentProviderProxy.query(ContentProviderNative.java :366) 10-14 14:54:50.433: 错误/AndroidRuntime(27470): 在 android.content.ContentResolver.query(ContentResolver.java:262)
谁能帮我。
android - CursorAdapter bindView 方法上的 NullPointerException
我创建了一个扩展 CursorAdapter 的类,我在 bindView 方法上有问题。
我总是在这一行得到一个 NullPointerException
TextView name_text = (TextView) v.findViewById(R.id.qr_url);
这很奇怪,因为我在我的一个 xml 中定义了 qr_url。
我是否错过了代码上的某些内容,这就是为什么它是 NullPointerException?提前致谢。
android - 使用两个 ListView 滚动,尝试填充 LinearLayout
让自己陷入困境,试图在同一个活动中挤压两个 ListView。它使用包含在标准(垂直)LinearLayout 中的两个单独的 ListFragment 来工作。
问题是,这两个列表加起来比屏幕长,因此第二个列表被部分隐藏了。从视觉上看,用户希望向上拖动整个屏幕并显示第二个列表。但是这两个列表有自己的内部滚动,它们不允许整个屏幕作为一个整体滚动。
幸运的是,这些列表实际上包含的项目很少(平均每个 5 个)。因此,理论上,我可以填充几个 LinearLayouts 容器。问题是,列表显示的数据来自游标并且是动态的。虽然我知道 CursorAdapter 的 newView() 和 bindView() 方法,但我不太明白如何将适配器连接到 LinearLayout 容器而不是 ListViews。即 CursorAdapter 如何知道它必须从它在光标中找到的 5 个项目中创建 5 个行项目?在哪里创建循环遍历光标项并在 LinearLayout 容器中创建项?当 Cursor 中的数据发生变化时,如何刷新 LinearLayout 的内容?我发现的所有示例都将这些问题巧妙地包装到 ListActivity 提供的 ListView 中,
我很困惑!
马努
编辑:这是遵循 breceivemail 建议时 (Fragment)Activity 的 xml 布局。在 breceivemail 的建议之前,注释掉的是原始的 LinearLayout 容器。还应该注意的是,整个活动又包含在 TabHost 中,但我不知道这是否对手头的问题有任何影响。