1

ユーザーがデータベース内の本を照会できるデータベースがあります。

クエリ結果を「ブックマーク」として保存しようとしています。ユーザーはクエリを入力し、結果をクリックしてその特定の書籍の詳細情報を表示できます。

次に、ユーザーがクエリをブックマークに「保存」できるようにするメニュー オプションがあります。保存されたクエリがデータベース テーブルに挿入されます。ブックマークは、ユーザーがブックマークを管理できるように、保存されたデータをリスト ビューとしてロードするアクティビティです。

節約を除いて、すべてがセットアップされ、素晴らしく機能しています。保存されたメニューオプションが選択されたときに、クエリからデータベースに結果を取得するための最良の方法、または最善の方法がわかりません。

標準の sqlite 挿入は機能しますが、特定のクエリ結果データが含まれていません。

コードの一部:

package com.example.newdatabase;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;


public class DetailView extends Activity
{
    private DBAdapter dbHelper;
    private SimpleCursorAdapter dataAdapter;
    private long rowid;//row for book from position in database
    public static final String BOOKM_ID = "rowid";

@Override
   public void onCreate(Bundle savedInstanceState) 
   {
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.detailviewlist);

  rowid=getIntent().getExtras().getLong(TitleSearch.ROW_ID);//passed from TitleSearch pass the row id

        dbHelper = new DBAdapter(this);
        dbHelper.open();

        //loads data into list 
        displayListView();
   }

private void displayListView()
{
    Cursor cursor=dbHelper.getABOOK(rowid);//cursor and query method only shows one book

    //defines columns to bind
    String [] columns =new String[]
            {
                DBAdapter.KEY_TITLE,
                DBAdapter.KEY_AUTHOR,
                DBAdapter.KEY_EDITION,
                DBAdapter.KEY_PUBLISHER,
                DBAdapter.KEY_DESCRIPTION,
                DBAdapter.KEY_OPAC,
                DBAdapter.KEY_LOCATION,
                DBAdapter.KEY_CALL,
                DBAdapter.KEY_COPIES,
                DBAdapter.KEY_STATUS,

            };

    // the XML defined views which the data will be bound to
      int[] to = new int[] 
      {
        R.id.title,
        R.id.author,
        R.id.edition,
        R.id.publisher,
        R.id.description,
        R.id.subject,
        R.id.location,
        R.id.callnum,
        R.id.copies,
        R.id.status,
      };

    // create the adapter using the cursor pointing to the desired data
      //as well as the layout information
      dataAdapter = new SimpleCursorAdapter(
        this, R.layout.detailbook,
       cursor,
       columns,
        to,
        0);

     ListView listView = (ListView) findViewById(R.id.listView2);
      // Assign adapter to ListView
      listView.setAdapter(dataAdapter);

}
   @Override
    public boolean onCreateOptionsMenu(Menu menu) //save menu
    {
       super.onCreateOptionsMenu(menu);
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.savemenu, menu);
       return true;

    }



  /* @Override
    public boolean onOptionsItemSelected(MenuItem item) //lauches the bookmark when saved
    {
       Intent addContact = new Intent(DetailView.this, Bookmark.class);
       startActivity(addContact);
       return super.onOptionsItemSelected(item);
    }*/


   public boolean onOptionsItemSelected(MenuItem item)//menu action
    {

        switch (item.getItemId())
        {
        case R.id.addsave:
            // Single menu item is selected to save book info

            //adds info into bookmark on save click

            //this is where i am having an issue





            Toast.makeText(DetailView.this, "The book has been saved!", Toast.LENGTH_SHORT).show();//feedback for user
            return true;

        default:
            return super.onOptionsItemSelected(item);

        }

    } //end of options
    }//end of detail view

getABOOK(rowid) クエリの結果を、ブックマークが使用するデータベース テーブルに保存しようとしています。

結果を保存するためのより良い方法がない限り。

4

1 に答える 1

0

同じテーブルに Bookmark という新しい列を作成し、ユーザーがブックマークを選択したときにブックマークのタイムスタンプを特定の行に追加することをお勧めします。

ブックマーク ビューでは、ブックマークが null でないすべての行を簡単にクエリできます。

于 2012-12-01T18:04:07.170 に答える