使用Cursor在Listview中显示Sqlite数据库中的数据

时间:2016-08-16 15:36:53

标签: java android sqlite listview

我是Android的新手,并且正在开发一个将数据存储在Sqlite数据库中的Android应用程序,这似乎有效。当我想使用适配器在Listview中显示数据时,它不显示。因为我被困在这里,任何提示或帮助将不胜感激。

以下是活动:

import android.app.ListActivity;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;

import java.util.ArrayList;

import de.die_web_agenten.www.runinstant.db.TaskContract;
import de.die_web_agenten.www.runinstant.db.TaskDBHelper;

public class SecondListActivity extends ListActivity {

    // declare class variables
    private ArrayList<Item> m_parts = new ArrayList<Item>();
    private Runnable viewParts;
    private ItemAdapter m_adapter;
    private ListAdapter listAdapter;
    private TaskDBHelper helper;

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // instantiate our ItemAdapter class
        m_adapter = new ItemAdapter(this, R.layout.list_item, m_parts);
        setListAdapter(m_adapter);

        // here we are defining our runnable thread.
        viewParts = new Runnable(){
            public void run(){
                handler.sendEmptyMessage(0);
            }
        };

        // here we call the thread we just defined - it is sent to the handler below.
        Thread thread =  new Thread(null, viewParts, "MagentoBackground");
        thread.start();
    }

    private void updateUI() {
        helper = new TaskDBHelper(SecondListActivity.this);
        SQLiteDatabase sqlDB = helper.getReadableDatabase();
        Cursor cursor = sqlDB.query(TaskContract.TABLE,
                new String[]{TaskContract.Columns._id, TaskContract.Columns.SCAN_RESULT, TaskContract.Columns.SCAN_RESULT_FORMAT
                        },
                null, null, null, null, null
        );


        listAdapter = new SimpleCursorAdapter(
                this,
                R.layout.task_view,
                cursor,
                new String[]{TaskContract.Columns.SCAN_RESULT_FORMAT, TaskContract.Columns.SCAN_RESULT, TaskContract.Columns._id},
                new int[]{R.id.taskTextView},
                0
        );

        this.setListAdapter(listAdapter);

    }


    public void onClick(DialogInterface dialogInterface, int i, Cursor cursor) {

        cursor.moveToLast();
        int keyIdOfRowToDelete = cursor.getInt(cursor.getColumnIndex(TaskContract.Columns._id));
        SQLiteDatabase sqlDB = null;
        sqlDB.delete(TaskContract.TABLE, TaskContract.Columns._id + "=?", new String[]{String.valueOf(keyIdOfRowToDelete)});
        String sql = String.format("SELECT FROM %s WHERE %s = '%s'",
                TaskContract.TABLE,
                TaskContract.Columns.SCAN_RESULT, TaskContract.Columns.SCAN_RESULT_FORMAT);
        //task);
        //TaskContract.Columns.DESCRIPTION,
        //description);
        helper = new TaskDBHelper(SecondListActivity.this);
        sqlDB = helper.getWritableDatabase();
        sqlDB.execSQL(sql);
        updateUI();
    }

    private Handler handler = new Handler()
    {

        public void handleMessage(Message msg)
        {

            // create some objects
            // here is where you could also request data from a server
            // and then create objects from that data.
            helper = new TaskDBHelper(SecondListActivity.this);
            SQLiteDatabase sqlDB = helper.getWritableDatabase();
            String sql = String.format("SELECT FROM %s WHERE %s = '%s'",
                    TaskContract.TABLE,
                    TaskContract.Columns.SCAN_RESULT_FORMAT,
                    TaskContract.Columns.SCAN_RESULT
            );
            sqlDB.execSQL(sql);
            //updateUI();
            String contents = TaskContract.Columns.SCAN_RESULT;
            String format = TaskContract.Columns.SCAN_RESULT_FORMAT;

            //Intent SecondIntent = getIntent();
            //String contents = SecondIntent.getStringExtra("SCAN_RESULT");
            //String contents = SecondIntent.getStringExtra("SCAN_RESULT", contents);
            //String format = SecondIntent.getStringExtra("SCAN_RESULT_FORMAT");
            //Intent intent = new Intent();
            //String contents = intent.getStringExtra("SCAN_RESULT");
            //String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            //setResult(RESULT_OK, intent);


            m_parts.add(new Item(contents, format, 0));
            m_parts.add(new Item("MyItemName #2", "This is item #2", 0));
            m_parts.add(new Item(contents, format, 0));
            Log.d("CDebugTag", "Value: " + (contents));
            Log.d("DDebugTag", "Value: " + (format));
            //updateUI();
            //Log.d("DDebugTag", "Value: " + (format));
            /*m_parts.add(new Item("MyItemName", "This is item #3", 0));
            m_parts.add(new Item("MyItemName #2", "This is item #4", 0));
            m_parts.add(new Item("MyItemName", "This is item #5", 0));
            m_parts.add(new Item("MyItemName #2", "This is item #6", 0));
            m_parts.add(new Item("MyItemName", "This is item #7", 0));
            m_parts.add(new Item("MyItemName #2", "This is item #8", 0));
            m_parts.add(new Item("MyItemName", "This is item #9", 0));
            m_parts.add(new Item("MyItemName #2", "This is item #10", 0));*/


            m_adapter = new ItemAdapter(SecondListActivity.this, R.layout.list_item, m_parts);

            // display the list.
            setListAdapter(m_adapter);
            //updateUI();
        }
    };
}

这里缺少什么?任何提示都非常受欢迎,谢谢。

0 个答案:

没有答案