Пользовательский класс внутри расширенного класса приложения не распознается? - PullRequest
0 голосов
/ 22 июня 2011

Мне нужно создать глобальный Arraylist, состоящий из экземпляров моего пользовательского класса 'Book', который будет использоваться в приложении.

Итак, я создал файл «MyBooks.java», содержащий класс «MyBooks» (расширяющий класс приложения), в котором определены пользовательский класс «Book» и Arraylist «Booklist».

В основном файле активности 'ExampledroidActivity.java' мне нужно загрузить данные с сервера, создать экземпляры 'Book' и добавить эти экземпляры в ArrayList 'BookList'.

проблема в том, что не распознает класс Книги в файле 'ExampledroidActivity.java'.

Может ли кто-нибудь PLZ посмотреть на код и указать, что я делаю неправильно.

Код из обоих файлов приведен ниже

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);
        }        


}

}

Если это вопрос нуб, пожалуйста, потерпите меня, Заранее спасибо,

Shobhit

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Лучшим ответом может быть

  • , чтобы отделить вашу книгу классов в другом файле (Book.java)
  • сделать BookList частным и предоставить средства доступа (установщик / получатель)
  • соблюдайте соглашения об именах java: начало класса начинается с буквы upperCase, затем верблюда, переменные начинаются с буквы lowerCase, а затем верблюда.
  • делают класс приложений Android одноэлементным.

Пока в вашем дизайне есть некоторые недостатки, но продолжайте учиться, Android - это весело.

С уважением, Стефан

1 голос
/ 22 июня 2011

Ваш внутренний класс может быть статичным.

С уважением, Stéphane

...