有一种简单的方法以相反的顺序显示ListView吗?我正在尝试创建一个基于会话的应用程序,并希望最近的条目位于ListView的底部.我知道transcriptMode和stackFromBottom,但我的问题是数据的顺序.
假设我有100个会话项目,并且想要显示项目80-100,其中100是最近的会话项目.我想显示80-100,这意味着我的查询中的ORDER BY id desc LIMIT 20,它强制将项目排序100到80,与我需要的相反.我目前有一些讨厌的内部查询代码,但感觉应该有一个更简单的解决方案基于反转光标或简单地反转ListView.
我在FragmentActivity中使用多个ListFragments创建一个viewPager.为了填充不同的列表视图,我在加载器中获得LoaderManager和initiliaze.我希望每个片段都有一个唯一的LoaderManager,但是,片段没有getSupportLoaderManager()方法,所以我需要调用父片段活动:
getActivity().getSupportLoaderManager()
Run Code Online (Sandbox Code Playgroud)
我的Loaders在不同片段中识别的这种方法的问题与彼此冲突.当你已经在一个片段中拥有多个加载器id时,它会变得有点麻烦.那么有没有办法为每个片段获取一个唯一的LoaderManager,而不是调用父片段?我基本上希望能够在多个片段上使用相同的id.
谢谢
android android-cursor android-listfragment android-loadermanager android-support-library
尝试使用ContentProvider下面显示的自定义查询我的数据库时,我收到以下错误.
我已经确认该表存在正确的名称,但仍然无效.
我能够使用原始查询,但我希望我们ContentProvider实践的模式.
谢谢,如果您需要更多信息,请与我们联系.
SQLiteOpenHelper
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = DatabaseHelper.class.getSimpleName();
private static final String DB_PATH =
"/data/data/ashton.android.personal.worktc/databases/";
private static final String DB_NAME = "worktc.db";
private static final int DB_VERSION = 1;
private SQLiteDatabase myDatabase;
private final Context context;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
}
/**
* Creates a empty database on the system and rewrites it with your own database.
* */ …Run Code Online (Sandbox Code Playgroud) database sqlite android android-contentprovider android-cursor
如何将光标"转换"为JSONArray?
我的光标为3columns(_id,name,birth)
我搜索过,但我找不到任何例子
我正在制作一个使用数据库的Kiosk应用程序.该应用程序一直在前台运行.该应用程序有许多使用一个共享DataBaseHelper实例的线程.该应用程序完美无缺,但大多数时间在5或6小时后,我遇到这些异常,然后应用程序崩溃:
E/DataBaseHelper:2048 kb的游标窗口分配失败.#Open Cursors = 1(此proc = 1打开的#游标)
E/CursorWindow:由于错误-24,无法分配大小为2097152的CursorWindow'/data/user/0/com.kios.frm/databases/YadProjectDB.db'.
E/SQLiteLog:(14)无法打开[00bb9c9ce4]第30192行的文件
E/SQLiteLog:(14)语句中止16:[SELECT number FROM sms LIMIT 5]无法打开数据库文件
E/SQLiteQuery:异常:无法打开数据库文件(代码14);
查询:SELECT编号FROM sms LIMIT 5E/SQLiteLog:(14)os_unix.c:30192:(24)
open(/data/user/0/com.kiosk.frm/databases/YadProjectDB.db-journal) -
我正确关闭了光标,但仍然获得了这些异常.那些例外是什么?这些例外的原因是什么?
主要活动
private DataBaseHelper db = null; // Global
Run Code Online (Sandbox Code Playgroud)
MainActivity onCreate方法:
db = new DataBaseHelper(this);
new Thread(new Runnable() {
@Override
public void run() {
while (threadRunningFlag) {
Cursor result = null;
try {
result = db.getData("SELECT " + DataBaseHelper.SMS_COLUMN_PHONE_NUMBER + " FROM " + DataBaseHelper.SMS_TABLE_NAME + " LIMIT 5");
if (result != null && result.getCount() > …Run Code Online (Sandbox Code Playgroud) database android android-cursor android-sqlite android-4.4-kitkat
我有一个Android应用程序,它使用服务每5ms收集传感器数据并将其插入sqlite表.在典型的会话中,将有大约40分钟的录音.所有这些代码似乎都运行良好.
我有一个奇怪的问题,如果用户导航到特定的片段,我会收到CursorWindow: Window is full: requested allocation XXX错误.我不确定导致该错误的特定片段有什么特别之处,并且只发生在这个片段中
有问题的片段包含一个按钮,点击该按钮时会执行以下操作:
.db文件的副本创建到外部存储片段代码看起来像这样(为简洁起见,许多catch块都被省略了 - 它们大多只是记录信息):
public class SaveFragment extends Fragment implements View.OnClickListener {
Button saveButton;
MainActivity mainActivity;
DBHelper dbHelper;
Boolean subjectDataExists;
MediaScanner mediaScanner;
static ProgressDialog dialog;
public SaveFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_save, container, false);
//Get save button view
saveButton = (Button) view.findViewById(R.id.saveButton);
saveButton.setOnClickListener(this);
//Get DBHelper
dbHelper …Run Code Online (Sandbox Code Playgroud) sqlite android android-fragments android-cursor android-sqlite
我想通过查询获得的一张专辑的歌曲列表MediaStore与CursorLoader
我怎样才能做到这一点 ?我可以使用以下代码获取设备的所有歌曲:
static final String[] TRACK_SUMMARY_PROJECTION = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE};
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
String select = null;
return new CursorLoader(getActivity(), MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
TRACK_SUMMARY_PROJECTION, select, null,
sortOrder);
}
Run Code Online (Sandbox Code Playgroud)
我应该添加什么代码或修改来过滤特定专辑的歌曲?
我想从Android只选择具有电话号码的联系人的唯一联系人.我正在使用此代码
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, ContactsContract.Contacts.DISPLAY_NAME);
// Find the ListView resource.
mainListView = (ListView) findViewById(R.id.mainListView);
// When item is tapped, toggle checked properties of CheckBox and
// Planet.
mainListView
.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View item,
int position, long id)
{
ContactsList planet = listAdapter.getItem(position);
planet.toggleChecked();
PlanetViewHolder viewHolder = (PlanetViewHolder) item
.getTag();
viewHolder.getCheckBox().setChecked(planet.isChecked());
}
});
// Create and populate planets.
planets = (ContactsList[]) getLastNonConfigurationInstance();
// planets = new Planet[10]; …Run Code Online (Sandbox Code Playgroud) android contacts android-contentprovider android-contacts android-cursor
我正在使用Intent.ACTION_GET_CONTENT它打开最近的文件。从最近的文件中选择项目会产生错误的 URI,但从文件管理器中选择相同的文件会提供正确的 URI,可以由我的代码处理。
public static String getRealPathFromURI(Context context, Uri uri) {
String path;
if ("content".equals(uri.getScheme())) {
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
path = cursor.getString(idx);
cursor.close();
} else {
path = uri.getPath();
}
return path;
}
Run Code Online (Sandbox Code Playgroud)
注意:uri.getPath()当我从最近的文件中选择 PDF 时的输出是/document/...但从文件管理器中选择相同的文件时,.../emulated/....
注意:从最近的文件中选择文件时的错误是
无法从 CursorWindow 读取第 0 行、第 -1 行。在访问 Cursor 中的数据之前,确保它已正确初始化。
android android-intent android-contentresolver android-cursor
我想在Android中的SQLite中执行跨数据库查询.我在两个不同的数据库中有两个表.
attach database 'data/data/com.app/databases/db1' as db1;
attach database 'data/data/com.app/databases/db2' as db2;
SELECT db1.tbl1.* FROM db1.tbl1 JOIN db2.tbl2 ON db1.tbl1.primaryKey = db2.tbl2.primaryKey
WHERE db1.tbl1.columnX = ? AND db2.tbl2.columnY = ?
Run Code Online (Sandbox Code Playgroud)
通过Android rawQuery方法调用此查询,如:
Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, new String[]{"1","xyz"});
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
SQLiteException: bind or column index out of range: handle 0xa6259ec8
Run Code Online (Sandbox Code Playgroud)
我检查了查询的语法,这是正确的.是不是可以在Android中执行跨数据库查询?