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

マイリストは誰でも一度だけ印刷するとどのように追加する方法を提案してくださいeach.Canその印刷タイプ 8回、したがって、8つの文字列の要素で構成されていテーブル(HomePage.html)の2番目の行は同じwicket id:listviewです。 私はちょうどbeginner.Anyヘルプがappreciated.Thankyou

編集だろうよ -

私のリストはで構成されています - 実際に[名、ABC、タイプ、largetext、名前、BCD、種類、数] これはJSONです。私はJSONを解析し、これをListViewに渡してTableに表示します。私は解析し、Table.javaでListを作成しました。表に表示する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 

- 私はHomePage.javaにこのコードを使用する、HomePage.javaにリストビューを有します。しかし、コードでitem.add(新しいLabel( "name"、list.get(1))); であり、その印刷は複数回、すなわちリストのサイズとして行われる。

+0

「タイプ」か「名前」のどちらの文字列リストを見つけるにはどうすればよいですか?私は 'name'、' type'のモデルを持ち、リストに追加することを提案できます。 wicket – soorapadman

+0

とは関係のない 'list.get(0)'、 'list.get(1)'と言う必要はありません。コンテナ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

ありがとうございました。これは私が欲しいものです。:-) – Spandana

+0

私はこのようにMyPojoを使用しています - PersonList mypojo1 = new 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 これは動作していますが、多くの値に対して、問題の多いインスタンスを作成しています。インスタンスを何度も作成するのではなく、反復を使用できるかどうかを教えてください。値が動的に追加されるようにしてください。事前におねがいします – 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; 
} 

} 

をそして使用して簡単なリストビューを作成します

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コード:

モデルオブジェクトとしてそのPOJOあなたはこのような何かをしたい、私が理解したものから
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への値を使用していることを疑います。しかし、私の** List **は** Table.java **にあります。ここでHomePage.javaまたはMyPojo.javaの** LIST **にアクセスしますか? – Spandana

+1

HomePage.javaのテーブルListにアクセスして、新しいMyPojoインスタンスのforeachペア(name、type)を作成し、そのインスタンスをMyPojoのリストに追加する必要があります –

+0

MyPojoを作成しましたが、 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でアクセスされましたが、個々の値に個別にアクセスできます。ループを使用して1つの属性で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); 
    }