Java 我无法使用findViewById重新引用TableRow
我有一个活动,通过编程创建Tablerow,因为我不知道需要多少文件。 每个TableRow都有一个ID,从100开始,然后继续200、300,依此类推。 当我创建第3行时,TableRow的ID是300。 然后,当有人编辑其他行时,我需要知道哪一行只是为了处理该行的元素 我的问题:以前的值: trActiva.getId=300 这是我写的代码:Java 我无法使用findViewById重新引用TableRow,java,android,android-studio,Java,Android,Android Studio,我有一个活动,通过编程创建Tablerow,因为我不知道需要多少文件。 每个TableRow都有一个ID,从100开始,然后继续200、300,依此类推。 当我创建第3行时,TableRow的ID是300。 然后,当有人编辑其他行时,我需要知道哪一行只是为了处理该行的元素 我的问题:以前的值: trActiva.getId=300 这是我写的代码: lineaActiva = (tv.getId()) / 100 * 100; trActiva = findViewById(lineaAct
lineaActiva = (tv.getId()) / 100 * 100;
trActiva = findViewById(lineaActiva);
就在这两行之前的点上trActiva.getId=300
在代码的第一行之后lineaActiva=200
这意味着在第二行之后,trActiva.getId应该是200,但仍然是300
更奇怪的事情:
在这两行之后:
trActiva.getId()=300
findViewById(lineaActiva).getId()=200
这里发生了什么?为什么trActiva没有改变
谢谢 我们不确定您是如何增加Id的,您是如何存储数据的,以及您是如何在计算机屏幕上查看300行的 因此,缺少了很多代码来为您的问题提供非常有针对性的答案 下面是我们从Derby数据库填充的表 该表名为ptable,我们还可以提到,我们正在使用模型-视图-控制器模式来管理数据,以获取和设置变量 首先,我们从数据库中读取并用此代码填充ptable 然后我们编写侦听器代码,允许我们查看所选行的详细信息 请注意,我们从所选行获取ID 在这里,您可以使用该值查找大于300的新条目 或者,您可以在表上编写搜索查询,查找ID大于300的所有记录 下面是允许您单击表中某一行的代码 希望这有帮助,欢迎来到Stack Overflow 请在将来发布更多的代码,这样你的问题就可以有一个更明确的答案
private void ReadFromParent() throws SQLException{
ObservableList<ParentModel> TableData = FXCollections.observableArrayList();
stmnt = conn.createStatement();
ResultSet rs = stmnt.executeQuery("SELECT * FROM Parent");
while (rs.next()){// Add data to observableArrayList TableData to select a table ROW
TableData.add(new ParentModel(rs.getString("PID"),rs.getString("pMonth"),rs.getString("pYear")));
}
PropertyValueFactory<ParentModel, String> IDCellValueFactory = new PropertyValueFactory<>("PID");
colID.setCellValueFactory(IDCellValueFactory);
PropertyValueFactory<ParentModel, String> DateCellValueFactory = new PropertyValueFactory<>("pMonth");
colMonth.setCellValueFactory(DateCellValueFactory);
PropertyValueFactory<ParentModel, String> TypeCellValueFactory = new PropertyValueFactory<>("pYear");
colYear.setCellValueFactory(TypeCellValueFactory);
// ================================================================
// colTxDate are the ID's for the tableview columns
// sortDate are the Column Names for the Database TABLE CDBalance
// ================================================================
colMonth.setStyle("-fx-alignment: CENTER;");
colYear.setStyle("-fx-alignment:CENTER;");
Collections.sort(TableData, (p2, p1)-> p1.getPID().compareToIgnoreCase(p2.getPID()));
// Line of Code above Sorts Database Columns based on VARIABLE in ParentModel
// Change p2,p1 to sort Ascending or Descending
if(TableData.size() < 15) {// Format TableView to display Vertical ScrollBar
ptable.setPrefWidth(336);// 19 is the off set
}else {
ptable.setPrefWidth(355);
} ptable.setItems(TableData);
stmnt.close();
}
private void showTableDataDetails(ParentModel info) throws IOException{
if (info != null) {
info = (ParentModel) ptable.getSelectionModel().getSelectedItem();
strID = info.getPID();
strMONTH = info.getPMonth();
strYEAR = info.getPYear();
toChildView();
System.out.println("########### PID "+strID);
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
ptable.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends ParentModel>
observable,ParentModel oldValue, ParentModel newValue) -> {
try {
showTableDataDetails((ParentModel) newValue); // When a row of the table is Selected call
// Proper Construction // showTableDataDetails method
} catch (IOException ex) {
Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
}
});
}