2016-11-30 1 views
0

HomePage.javaКалитки - GetList() в списке печати несколько раз

Table table = new Table("table"); 
List<String> list = (List<String>) table.getList(); 
    System.out.println("accessed list:" + list); //returns list from Table.java 

    add(new ListView("listview", list) { 
     protected void populateItem(ListItem item) { 

      item.add(new Label("name", list.get(1))); 
      item.add(new Label("type", list.get(3))); 
     } 
    }); 

Метод в Table.java -

public List<String> getList() { 

     return list; 
      } 

homepage.html

<table class="table"> 
<tr wicket:id="listview"> 
<td><span wicket:id="name"></span></td> 
<td><span wicket:id="type"></span></td> 
</tr> 
</table> 

В HomePage.java,

add(new ListView("listview", list) { 
    protected void populateItem(ListItem item) { 

    item.add(new Label("name", list.get(0))); // printing the value at 1st position multiple times. 
    item.add(new Label("type", list.get(1))); // printing the value at 2nd position multiple times. 
    } 
    }); 

Мой список состоит из 8 элементов Струнных, следовательно, его печатью имени и типа 8 раз each.Can Любой, пожалуйста, подсказывает, как напечатать только один раз и как добавить вторая строка в таблице (HomePage.html) с такими же wicket id: listview. Я просто помощь beginner.Any будет appreciated.Thankyou

Редактировать -

Мой список состоит из: - [имя, азбука, тип, largetext, имя, BCD, тип, номер] На самом деле это JSON. Я проанализировал JSON и создал List, чтобы передать это ListView для отображения в таблице. Я проанализировал и создал список в Table.java. У меня есть ListView в HomePage.java, так что использовать этот код в HomePage.java -

Table table = new Table("table"); 
List<String> list = (List<String>) table.getList(); 
System.out.println("accessed list:" + list); //returns list from Table.java 

Попытка это значение списка, чтобы перейти к ListView в HomePage.java для отображения в таблице. Но с кодом item.add (новая метка ("name", list.get (1))); , его печать несколько раз в зависимости от размера списка.

+0

Как вы находите свой список строк, будь то 'type' или' name'?Я мог бы предложить создать модель для 'name',' type' и добавить в список. Вам не нужно указывать 'list.get (0)', 'list.get (1)', который не имеет отношения к wicket – soorapadman

+0

Если вы хотите добавить строку, предлагающую иметь контейнер onclick, вы добавляете список и обновляете ' listview' – soorapadman

ответ

0

Из того, что я понял, что вы хотите сделать что-то вроде этого:

HomePage.java

Table table = new Table("table"); 
    List<String> listOfString = (List<String>) table.getList(); 

    List<MyPojo> listOfMyPojo = new ArrayList<MyPojo>(); 
    MyPojo myPojo1 = new MyPojo(listOfString.get(1), listOfString.get(3)); 
    listOfMyPojo.add(myPojo1); 
    MyPojo myPojo2 = new MyPojo(listOfString.get(5), listOfString.get(7)); 
    listOfMyPojo.add(myPojo2); 

    add(new ListView<MyPojo>("listview", listOfMyPojo) { 
     protected void populateItem(ListItem<MyPojo> item) { 
      MyPojo myPojo = item.getModelObject(); 
      item.add(new Label("name", myPojo.getName())); 
      item.add(new Label("type", myPojo.getType())); 
     } 
    }); 
+0

Thankyou soo much .... Это то, что я хотел .. :-) – Spandana

+0

Я использую MyPojo как это - PersonList mypojo1 = новый PersonList (listOfString.get (0), listOfString.get (1)); \t \t listOfBean.add (mypojo1); \t \t PersonList mypojo2 = новый PersonList (listOfString.get (2), listOfString.get (3)); \t \t listOfBean.add (mypojo2); \t \t PersonList mypojo3 = новый PersonList (listOfString.get (4), listOfString.get (5)); \t \t listOfBean.add (mypojo3); \t \t Это работает, но для многих ценностей его проблематично, создавая так много экземпляров. Можете ли вы предложить, могу ли я использовать итерацию ... вместо создания экземпляра столько раз? Так что значения добавляются динамически. Спасибо заранее – Spandana

1

Я не понимаю, что вы хотите сделать точно, но я думаю, что лучший способ сделать это, чтобы создать POJO, содержащий имя и тип атрибутов:

public class MyPojo { 
private String name; 
private String type; 
public MyPojo(String name, String type) { 
    super(); 
    this.name = name; 
    this.type = type; 
} 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 
public String getType() { 
    return type; 
} 
public void setType(String type) { 
    this.type = type; 
} 

} 

А затем создать простой Listview с помощью что POJO в качестве модельного объекта:

HTML код:

<table class="table"> 
<tr wicket:id="listview"> 
<td><span wicket:id="name"></span></td> 
<td><span wicket:id="type"></span></td> 
</tr> 
</table> 

JAVA код:

List<MyPojo> list = new ArrayList<MyPojo>(); 
//fill your list with the values you want to display 
    for (int i = 1; i <= 8; i++) { 
     MyPojo myPojo = new MyPojo("name" + i, "type" + i); 
     list.add(myPojo); 
    } 
//and then use a ListView component 
    add(new ListView<MyPojo>("listview", list) { 
     protected void populateItem(ListItem<MyPojo> item) { 
      MyPojo myPojo = item.getModelObject(); 
      item.add(new Label("name", myPojo.getName())); 
      item.add(new Label("type", myPojo.getType())); 
     } 
    }); 
+0

Спасибо большое. Я отредактировал вопрос и добавил дополнительную информацию. Пожалуйста, обратитесь один раз. У меня есть сомнения, что, создав MyPojo, мы используем значения из MyPojo в ListView. Но мой ** Список ** находится в ** Table.java **, где мы должны получить доступ к этому ** LIST ** в HomePage.java или MyPojo.java? – Spandana

+1

Вам нужно получить доступ к списку таблиц в HomePage.java и создать новую пару foreach для MyPojo (имя, тип), а затем добавить этот экземпляр в список MyPojo –

+0

. Я создал MyPojo, аналогичный предложенному вами, но доступ к LIST, как показано ниже: public MyPojo (String name, String name1, String type, String type1) { \t super(); \t \t this.name = list.get (0); \t this.type = list.get (1); \t this.name1 = list.get (2); \t this.type1 = list.get (3); \t \t} и получил доступ к этим значениям в HomePage.java, но я могу получить доступ к каждому значению отдельно. Как получить 2 или более значений имени в одном атрибуте с помощью цикла? Можете ли вы подробно объяснить программно? Заранее спасибо – Spandana

0

Вы должны назвать свои классы и объекты надлежащим образом, чтобы сделать код более читаемым. Вы можете продолжить следующее:

List<Person> persons = new ArrayList<>(); 

    for (int i = 0; i < listOfString.size() - 1; i += 2) { 
     Person person = new Person(listOfString.get(i), listOfString.get(i + 1)); 
     persons.add(person); 
    } 
Смежные вопросы