使用Android studio的数据库示例

时间:2015-02-07 20:45:10

标签: java android database

我正在尝试学习如何在Android中创建数据库,并尝试按照以下指南进行操作:http://examples.javacodegeeks.com/android/core/database/android-database-example/

但是我在AndroidDatabaseExample活动中一直收到有关无法解析符号或方法的错误。

无法解决的方法是getTitle()getId(),无法解析的符号为R.layout.row_layoutR.id.list

AndroidDatabaseExample的代码:

package com.javacodegeeks.androiddatabaseexample;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;


public class AndroidDatabaseExample extends ListActivity implements OnItemClickListener {

    JCGSQLiteHelper db = new JCGSQLiteHelper(this);
    List list;
    ArrayAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //drop database if it exists
        db.onUpgrade(db.getWritableDatabase(), 1, 2);

        db.createBook(new Book("The Great Gatsby", "F. Scott Fitzgerald"));
        db.createBook(new Book("Anna Karenina", "Leo Tolstoy"));

        //get all books
        list = db.getAllBooks();
        List listTitle = new ArrayList();

        for (int i = 0; i < list.size(); i++) {
            listTitle.add(i, list.get(i).getTitle());
        }

        myAdapter = new ArrayAdapter(this, R.layout.row_layout, R.id.list, listTitle);
        getListView().setOnItemClickListener(this);
        setListAdapter(myAdapter);
    }

    @Override
    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
        //start BookActivity wih extras the book id
        Intent intent = new Intent(this, BookActivity.class);
        intent.putExtra("book", list.get(arg2).getId());
        startActivityForResult(intent, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //get all books again
        list = db.getAllBooks();

        List listTitle = new ArrayList();

        for (int i = 0; i < list.size(); i++){
            listTitle.add(i, list.get(i).getTitle());
            }

        myAdapter = new ArrayAdapter(this, R.layout.row_layout, R.id.list, listTitle);
        getListView().setOnItemClickListener(this);
        setListAdapter(myAdapter);
    }



}

getTitlegetId的方法在类Book中定义,其代码为:

package com.javacodegeeks.androiddatabaseexample;
public class Book {

    private int id;
    private String title;
    private String author;

    public Book(){}

    public Book(String title, String author) {
        super();
        this.title = title;
        this.author = author;
    }

    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book [id=" + id + ", title=" + title + ", author=" + author + "]";
    }

}

有谁知道如何解决这个问题?我之前使用过这个网站的教程,但它们工作正常,所以我有点困惑,为什么它不起作用。对于你们提供的任何帮助,我都会非常感激。

1 个答案:

答案 0 :(得分:0)

是的,这对我有用希望它会帮助某人

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {           
            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
     Intent passIntent = new Intent(summary.this,Update.class);
 passIntent.putExtra("book", item.get(position).getId_());
                startActivity(passIntent);
            }
        });

在我的情况下,List item = db.getAllContacts();`获取数据库和Update Activity中的所有项目在oncreate()中添加以下代码

        Intent intent = getIntent();
        int id = intent.getIntExtra("book", 0);
        // open the database of the application context
        db = new  DatabaseHandler(getApplicationContext());

        // read the book with "id" from the database
        eventitems = db.getContact(id);
        eventname .setText(eventitems.getEventname());
        firstname.setText(eventitems.getFirstName());
    Update.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

       eventitems.setEventname(((EditText) findViewById(R.id.eventname)).getText().toString());
            eventitems.setFirstName(((EditText) findViewById(R.id.firstname)).getText().toString());

            // update book with changes
            db.updateContact(eventitems);
              finish();
        }
    });