嘿,我使用listview来显示存储在数据库中的条目.我还有一个EditText元素和一个按钮,它将EditText的内容添加到数据库中.要将视图绑定到数据库内容,我使用SimpleCursorAdapter和以下populate函数:
private void populate() {
cursor = dbAdapter.getAllItems();
startManagingCursor(cursor);
String[] from = new String[] { DBAdapter.KEY_TASK };
int[] to = new int[] { android.R.id.text1 };
// Now create an array adapter and set it to display using our row
cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);
list.setAdapter(cursorAdapter);
}
Run Code Online (Sandbox Code Playgroud)
如果我添加了一个新条目,通过单击我要刷新列表视图的按钮,但这只适用于populate函数而不适用于公共适配器函数notifyDataSetChanged();.我有错误或者这是刷新列表视图的正确方法吗?
我想要一个Multiselected (checked) listview.当我选择一个项目时,必须出现绿色复选标记.为此,我使用CheckedTextViews.在ListView从数据库中获取数据.我正在使用SimpleCursorAdapter它.单击按钮后,所选条目(ID)将传递到下一个活动.
我的问题是CheckedTextView没有出现复选标记.但ID将传递给下一个活动.我究竟做错了什么?怎么解决?
selecttest.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Spinner
android:id="@+id/spinner_select_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
style="@style/btn_Font"
android:id="@+id/selecttest_start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/spinner_test"
android:onClick="onClick"
android:text="@string/selecttest_start" />
<ListView
android:id="@+id/lv_lesson"
android:layout_width="match_parent"
android:layout_height="200dp"
android:fadeScrollbars="false"
android:choiceMode="multipleChoice"
android:layout_alignParentLeft="true"
android:cacheColorHint="#00000000"
android:layout_below="@+id/selecttest_start" >
</ListView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
dataset_ctv_lesson.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<CheckedTextView
style="@style/tv_Font"
android:id="@+id/ctv_lesson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/none"
android:checkMark="@drawable/ctv_state_checker"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
ctv_state_checker.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"
android:drawable="@drawable/btn_check_buttonless_off" …Run Code Online (Sandbox Code Playgroud) 如何解决这个问题?
不推荐使用构造函数SimpleCursorAdapter(Context,int,Cursor,String [],int [])
和
不推荐使用类型为Activity的managedQuery(Uri,String [],String,String [],String)方法
这是代码:
package com.example.kamusdigital;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private TextView munculTulisan;
private ListView barisanKata;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
munculTulisan = (TextView) findViewById(R.id.tulisanMuncul);
barisanKata = (ListView) findViewById(R.id.barisDemiBaris);
mengaturIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) …Run Code Online (Sandbox Code Playgroud) 我正在使用SimpleCursorAdapter和一个xml文件,其中定义了一些视图:
<LinearLayout ...>
<ImageView android:id="@+id/listIcon" />
<TextView android:id="@+id/listText" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我的目的是以编程方式设置TextView的文本颜色和LinearLayout的背景颜色(即ListView中的每一行); 颜色从数据库返回.
我在尝试操作TextView时得到了NPE,例如,它发现它没有任何抱怨之后:
TextView tv = (TextView) findViewById(R.id.listText);
tv.setTextColor(color); // NPE on this line
Run Code Online (Sandbox Code Playgroud)
这是公平的; 如果列表中有多个条目,则可以合理地假设" R.id.listText "不起作用.所以我扩展了SimpleCursor适配器:
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
TextView text = (TextView) row.findViewById(R.id.listText);
// ImageView icon = (ImageView) row.findViewById(R.id.listIcon);
// If there's an icon defined
if (mIcon_id != 0) {
// icon.setImageResource(mIcon_id);
}
// If text color defined
if (mTextColor != 0) {
text.setTextColor(mTextColor);
} …Run Code Online (Sandbox Code Playgroud) 我有一个带有"mytable"表的数据库有2个列"id","sampletext"我想查询sampletext的不同值并使用SimpleCursorAdapter提供给Spinner.
这是经过尝试的
String[] cols=new String[]{"sampletext"};
int[] lbls=new lbls[]{android.R.id.text1};
mycursor=sdb.query(true,"mytable", cols,null,null,null,null,null,null);
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, cols,lbls,0);
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn.setAdapter(sca);
Run Code Online (Sandbox Code Playgroud)
当我运行这个我在第4行得到错误:id不存在.当我将第一行改为"id"时,微调器被填充了id值.但我需要"样本文本",我做错了什么?感谢任何建议
我想使用光标和列表视图显示我的表.但我得到了错误.
Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
Run Code Online (Sandbox Code Playgroud)
但我没有在我的申请中声明_id.有人能帮助我吗?
这是我在dbHelper中的代码.
public Cursor DataPesanKeluar() {
Cursor c = dba.rawQuery(
" SELECT "
+ kel_id + ","
+ e_chiperteks + ","
+ k_nama + ","
+ kel_waktu +
" FROM " + tbPesan + " INNER JOIN " + tbPesanKeluar +
" ON " + tbPesan + "." + p_idpesan + "=" + tbPesanKeluar + "." + kel_idpesan +
" INNER JOIN " + tbEnkrip +
" ON " + tbPesan …Run Code Online (Sandbox Code Playgroud) 我尝试使用db表的数据填充建议列表.但是我得到了StaleDataException.它会随机抛出,但总是在我将一个角色输入textview时.
这是我的代码:
CursorLoader扩展了Cristian的SimpleCursorLoader类
public class TagCursorLoader extends SimpleCursorLoader {
private String mSelection;
private TagDbLoader mDbLoader;
public TagCursorLoader(Context context, TagDbLoader dBLoader, String selection) {
super(context);
this.mDbLoader = dBLoader;
this.mSelection = selection;
}
@Override
public Cursor loadInBackground() {
return mDbLoader.fetchContainingString(mSelection);
}
}
Run Code Online (Sandbox Code Playgroud)
Loader回调:
public class TagCursorLoaderCallback implements LoaderCallbacks<Cursor>, CursorToStringConverter {
private Context mContext;
private TagDbLoader mdDbLoader;
private SimpleCursorAdapter mAdapter;
private String mSelection;
public TagCursorLoaderCallback(Context context, TagDbLoader dBLoader, SimpleCursorAdapter adapter) {
this.mContext = context;
this.mdDbLoader = dBLoader; …Run Code Online (Sandbox Code Playgroud) android simplecursoradapter android-cursor android-sqlite android-cursoradapter
我正在尝试通过遵循该链接中提供的示例项目在我的项目中实现TwoWayView.我实现了一切,我的代码工作没有任何错误,但实际的List没有得到膨胀.在调试时我发现适配器设置正确,并且该getItemCount方法也返回正数,但其他两个重写方法onCreateViewHolder并onBindViewHolder没有被调用.我不知道为什么它不起作用.请参阅下面的部分代码,任何帮助表示赞赏.谢谢.
MyAdapter.java类
public class MyAdapter extends RecyclerView.Adapter < MyViewHolder > {
private MySimpleCursorAdapter mCursor;
//some other private fields here
public MyAdapter(Context context, Cursor c, int resourceId, ViewType viewType, String containerId) {
mCursor = new MySimpleCursorAdapter(a1,a2,a3,a4,a5,a6); //Passed necessary arguments
....
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.w("onCreateViewHolder", "--------->executed"); //Line not executed
final View view = mCursor.newView(mContext, mCursor.getCursor(), parent);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) …Run Code Online (Sandbox Code Playgroud) android simplecursoradapter android-viewholder android-recyclerview
我正在为Android开发一个闹钟应用程序,我希望在主屏幕上显示警报列表.其中的每一行都ListView在xml文件中定义.我希望TextViews每周的每一天都能分开.程序将检查sqlite db是否为例如.mondayis = 1的值,然后将其颜色更改TextView为红色.我写了这段代码,但这不起作用.怎么了?
private void fillData() {
// Get all of the notes from the database and create the item list
Cursor c = db.fetchAllAlarms();
startManagingCursor(c);
String[] from = new String[] { db.KEY_TIME, db.KEY_NAME };
int[] to = new int[] { R.id.time, R.id.alarmName };
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter alarms =
new SimpleCursorAdapter(this, R.layout.alarm_row, c, from, to);
alarms.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public …Run Code Online (Sandbox Code Playgroud) sqlite android simplecursoradapter android-cursor android-viewbinder
我有一个ListView,显示项目列表.当我单击某个项目时,我将该项目标记为数据库表格中的标记.然后,我使用SimpleCursorAdapter,setViewBinder,setViewValue更新列表.
我检查是否为相应的项目设置了striked列,然后我更新TextView以敲击该项目.
代码如下
Cursor c = db.fetchAllNotes(id);
startManagingCursor(c);
String[] from = new String[] { DatabaseHandler.KEY_LIST };
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.task_row, c, from, to);
notes.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
// TODO Auto-generated method stub
text = (TextView) view.findViewById (R.id.text1);
System.out.println("Item is "+ text.getText().toString());
System.out.println("Item from cursor is " + cursor.getString(2));
System.out.println("Striked value is " + Integer.parseInt(cursor.getString(3)));
if(Integer.parseInt(cursor.getString(3)) == 1)
text.setPaintFlags(textViewItem.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
return false; …Run Code Online (Sandbox Code Playgroud)