2016-11-30 73 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)與檢票ID:列表視圖。 我只是一個beginner.Any幫助將是appreciated.Thankyou

編輯 -

我的名單包括 - [名abc型,largetext,名稱,BCD,類型,數量] 其實這是一個JSON。我已經解析了JSON並創建了一個List來將它傳遞給ListView以便在Table中顯示。我已經解析並在Table.java中創建了一個List。我的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(new Label(「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

三江源洙多....這就是我想要的.. :-)我使用MyPojo因爲這 – Spandana

+0

- 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 這是工作,但對於很多價值,它的問題創造這麼多instances.Can請你建議,如果我可以使用迭代...而不是創建一個實例這麼多次?這樣可以動態添加值。提前預約 – 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; 
} 

} 

,然後使用創建一個簡單的列表視圖該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

Thankyou這麼多....我已編輯的問題,並添加更多的信息。請參考一次。我有一個疑問,通過創建MyPojo,我們使用從MyPojo到ListView的值。但是我的**列表**在** Table.java **中,我們應該在哪裏訪問HomePage.java或MyPojo.java中的** LIST **? – Spandana

+1

你必須訪問表中列出,並HomePage.java創建一個新的MyPojo實例的foreach對(名稱,類型),那麼實例添加到我創建MyPojo相似,如你所說,但如下訪問列表MyPojo –

+0

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