2013-02-25 2 views
-3

У меня возникли проблемы с добавлением элементов из моего класса «Row» в мой класс «Таблица». Таблица классов расширяет ArrayList, поэтому каждый элемент массива должен содержать класс Row. Если я создаю таблицу классов и запускаю метод addApplicant (Row app) вручную, я могу добавить строку. Однако я бы хотел, чтобы строка автоматически добавила себя в таблицу классов, как только она будет создана. Вот мой код до сих пор: Таблица Класс:Добавление класса в ArrayList в другом классе

public class Table extends ArrayList<Row>{ 

public String appArray[]; 

/** 
* Constructor for objects of class Table 
*/ 
public Table() 
{ 
} 

public void addApplicant(Row app) 
{ 
    add(app); 
} 

public void listArray() //Lists the Array[] 
{ 
    for(int i = 0; i<appArray.length; i++) 
    { 
     System.out.println(appArray[i]); 
    } 
}} 

Row Класс:

public class Row{ 

private String appNumber; 
private String name; 
private String date; 
private String fileLoc; 
private String country; 
public ArrayList<String> applicant; 

public Row(String appNumber, String name, String date, String fileLoc, String country) 
{ 
    this.appNumber = appNumber; 
    this.name = name; 
    this.date = date; 
    this.fileLoc = fileLoc; 
    this.country = country; 
    applicant = new ArrayList<String>(); 
    applicant.add(appNumber); 
    applicant.add(name); 
    applicant.add(date); 
    applicant.add(fileLoc); 
    applicant.add(country); 
} 

private void convertToString() 
{ 
    for(int i = 0; i<applicant.size(); i++) 
     { 
      String appStr = applicant.toString(); 
     } 
}} 

Любые идеи, что я не хватает? Спасибо за любую помощь.

+0

Добавьте экземпляр таблицы как параметр в конструктор строк. чем вызов от конструктора строки до: table.AddApplicantRow (this) –

+0

Это плохой способ расширить ArrayList в вашем случае – bsiamionau

ответ

2

У вас нет ссылки на класс таблицы. Что вы можете сделать, это запрос, что объект таблицы передается в конструктор, так что ваш конструктор будет выглядеть следующим образом:

public Row(String appNumber, String name, String date, String fileLoc, String country, Table table) 

и вызвать

table.addApplicant(this); 

Когда вы закончите загрузку информации в Строковый объект. Это добавит ссылку на этот объект строки в вашу таблицу :)

+0

Спасибо большое! Это именно то, что мне нужно. Я отлично работаю :) – Hoggie1790

+0

Не забудьте отметить это как ответ будущим читателям :), а на другой ноте, использование Inheritance для такого рода вещей - неправильный способ сделать это. Поскольку вам требуется только небольшая часть функциональности класса ArrayList, вы должны использовать [Композиция] (http://en.wikipedia.org/wiki/Class_diagram#Composition) – christopher

+0

Я отметю ее, как только 10-минутный блок прошел. Я рассмотрю композицию. Еще раз спасибо за вашу помощь. – Hoggie1790