Я получил данные от JSON, используя Gson. Затем я пытаюсь поместить эти данные в TableView
, но мне удалось это сделать, как я увижу ниже.
public class Data {
@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("publicname")
@Expose
private String publicname;
@SerializedName("sendername")
@Expose
private String sendername;
@SerializedName("senderemail")
@Expose
private String senderemail;
@SerializedName("replyto")
@Expose
private String replyto;
// getters and setters...
@Override
public String toString() {
return "Data [id = " + id + ", name = " + name + ", publicname = " +
publicname + ", sendername = " + sendername + ", senderemail = " +
senderemail + ", replyto = " + replyto + "]";
}
}
public class meta {
@SerializedName("displayed_count")
@Expose (deserialize = false)
private Integer displayedCount;
@SerializedName("total_count")
@Expose (deserialize = false)
private Integer totalCount;
@SerializedName("limit")
@Expose (deserialize = false)
private Integer limit;
@SerializedName("offset")
@Expose (deserialize = false)
private Integer offset;
// getters and setters..
@Override
public String toString() {
return "meta [displayed_count=" + displayedCount + ", total_count=" +
totalCount + ", limit=" + limit + ", offset=" + offset + "]";
}
}
public class Contactlists {
@SerializedName("status")
@Expose (deserialize = false)
private String status;
@SerializedName("meta")
@Expose (deserialize = false)
private meta meta;
@SerializedName("data")
@Expose
public List<Data> data = null;
getters and setters
@Override
public String toString() {
return "" + data + "";
}
}
Teď Controller:
@FXML
private TableView<Contactlists> mytable;
@FXML
private TableColumn<Contactlists, String> stID;
@FXML
private TableColumn<Contactlists, String> stName;
@FXML
private TableColumn<Contactlists, String> stPublicname;
@FXML
private TableColumn<Contactlists, String> stSendername;
@FXML
private TableColumn<Contactlists, String> stSenderemail;
@FXML
private TableColumn<Contactlists, String> stReplyto;
private final ObservableList<Contactlists> observableList =
FXCollections.observableArrayList();
@FXML
private void actionk(ActionEvent event) throws Exception {
ContactListsGet();
String myjson = LoginTest.apiOutput;
Gson gson = new
GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Contactlists Contactlists =
gson.fromJson(myjson,Contactlists.class);
observableList.addAll(Contactlists);
stID.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getId)
.collect(Collectors.joining("\n"))));
stName.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getName)
.collect(Collectors.joining("\n"))));
stPublicname.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getPublicname)
.collect(Collectors.joining("\n"))));
stSendername.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getSendername)
.collect(Collectors.joining("\n"))));
stSenderemail.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getSenderemail)
.collect(Collectors.joining("\n"))));
stReplyto.setCellValueFactory(cellDataFeatures -> new
SimpleStringProperty(cellDataFeatures.getValue().data.stream()
.map(Data::getReplyto)
.collect(Collectors.joining("\n"))));
mytable.setItems(observableList);
}
и вот результат:
Однако, когда я использую это, данные вставляются только в одну строку ниже друг друга, что мне не удобно, потому что за отдельными списками контактов следуют другие действия,Как поместить данные в таблицу, где один список контактов будет в одной строке?