扩展应用程序类中的自定义类无法识别?

时间:2011-06-22 16:49:56

标签: android class extends

我需要创建一个全局Arraylist,其中包含我的自定义类'Book'的实例,以便在整个应用程序中使用。

所以我创建了一个包含'MyBooks'类(扩展应用程序类)的文件'MyBooks.java',其中定义了自定义类'Book'和Arraylist'Booklist'。

在主活动文件'ExampledroidActivity.java'中,我需要从服务器加载数据,创建'Book'实例并将这些实例添加到ArrayList'BookList'。

问题是似乎不能识别文件'ExampledroidActivity.java'中的Book类

有人可以查看代码并指出我做错了什么。

两个文件的代码如下所示

MyBooks.java -

package com.dubloo.exampledroid;

import java.util.ArrayList;
import android.app.Application;

public class MyBooks extends Application {

    public class Book {

        public int No;
        public String Name;
        public String Author;
        public boolean IsAvailable;

     //  constructor
        public Book(int bookNo, String bookName, String bookAuthor, boolean bookIsAvailable) {
                    No = bookNo;
                    Name = bookName;
                    Author = bookAuthor;
                    IsAvailable = bookIsAvailable;
        }
    }

    public ArrayList<Book> BookList  = new ArrayList<Book>();

}

ExampledroidActivity.java -

package com.dubloo.exampledroid;

import android.app.Activity;
import android.os.Bundle;


public class ExampledroidActivity extends Activity {

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

        MyBooks someBooks = ((MyBooks)getApplicationContext());

//here I get data from a server 
//for this example generating dummy data

        for(int n=1; n<20; n++){
            String Name = "The Book" + n;
            String Author = "Blah " + n;
            boolean IsAvailable = true;

//declare here an instance of class Book - in this part book class is not recognized
//definately doing some thing wrong here

            someBooks.Book thisBook = new someBooks.Book(n, Name, Author, IsAvailable);

//add book to the Booklist Arraylist

            someBooks.BookList.add(thisBook);
        }        


}

}

如果它是一个noob问题PLZ熊我, 提前谢谢,

Shobhit

2 个答案:

答案 0 :(得分:1)

你的内心阶级可能是静态的。

此致  斯特凡

答案 1 :(得分:1)

更好的答案可能是

  • 将您的课本与另一个文件(Book.java)分开
  • 将BookList设为私有并提供访问者(setter / getter)
  • 尊重java命名约定:类由upperCase字母开始然后是camel case,变量以lowerCase字母开头然后是camel case。
  • 使您的Android应用程序类成为单身。

到目前为止,您的设计存在一些缺陷,但继续学习,Android很有趣。

此致    斯特凡