标签: simplecursoradapter

使用SimpleCursorAdapter进行Android ListView更新

嘿,我使用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();.我有错误或者这是刷新列表视图的正确方法吗?

android listview android-listview simplecursoradapter

5
推荐指数
1
解决办法
1万
查看次数

CheckedTextView未选中

我想要一个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)

android listview checkedtextview simplecursoradapter

5
推荐指数
1
解决办法
4354
查看次数

不推荐使用构造函数SimpleCursorAdapter(Context,int,Cursor,String [],int [])

如何解决这个问题?

不推荐使用构造函数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)

android simplecursoradapter

5
推荐指数
1
解决办法
7739
查看次数

SimpleCursorAdapter中的findViewById()时的nullPointer

我正在使用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)

android listactivity android-layout simplecursoradapter

4
推荐指数
1
解决办法
1982
查看次数

将SimpleCursorAdapter与Spinner一起使用?

我有一个带有"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值.但我需要"样本文本",我做错了什么?感谢任何建议

android cursor simplecursoradapter

4
推荐指数
1
解决办法
1万
查看次数

引起:java.lang.IllegalArgumentException:列'_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)

android listview simplecursoradapter

4
推荐指数
2
解决办法
1万
查看次数

使用CursorLoader和SimpleCursorAdapter的AutoCompleteTextView

我尝试使用db表的数据填充建议列表.但是我得到了StaleDataException.它会随机抛出,但总是在我将一个角色输入textview时.

这是我的代码:

CursorLoader扩展了CristianSimpleCursorLoader

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

4
推荐指数
1
解决办法
3186
查看次数

RecyclerView.Adapter的onCreateViewHolder和onBindViewHolder方法没有被调用

我正在尝试通过遵循该链接中提供的示例项目在我的项目中实现TwoWayView.我实现了一切,我的代码工作没有任何错误,但实际的List没有得到膨胀.在调试时我发现适配器设置正确,并且该getItemCount方法也返回正数,但其他两个重写方法onCreateViewHolderonBindViewHolder没有被调用.我不知道为什么它不起作用.请参阅下面的部分代码,任何帮助表示赞赏.谢谢.

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

4
推荐指数
1
解决办法
8070
查看次数

使用SimpleCursorAdapter.ViewBinder更改TextView的颜色

我正在为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

3
推荐指数
1
解决办法
9079
查看次数

Android - 对任何ListView项目所做的任何更改都会受到第一项的影响

我有一个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)

android listview simplecursoradapter

3
推荐指数
1
解决办法
935
查看次数