我表中的一行是ComboBox。他们可以选择'是','否','两者' 如果他们选择Both,则必须对构建表的数据数组进行一些修改并刷新表。在之前的帖子中建议在Both语句中为Both构建我的逻辑。
protected void setValue(Object element, Object value)
{
if((element instanceof AplotDatasetData) && (value instanceof Integer)) {
Integer choice = (Integer)value;
String option = ((AplotDatasetData)element).getMarkupValue();;
if(choice == 0) {
option = "No";
}
else if(choice == 1) {
option = "Yes";
}
else {
option = "Both";
abd.getIndexOfSelectedBoth(); <<<<<<<<<
}
((AplotDatasetData)element).setMarkupValue(option);
getViewer().update(element, null);
}
}
上面的代码在OptionEditingSupport类中。
该表位于AplotBaseDailog类中。
所以在OptionEditingSupport类中,我导入了AplotBaseDailog类并分配了它。
AplotBaseDialog abd;
然后我在AplotBaseDailog类中编写了一个方法来获取他们刚刚更改为Both的列的行索引。我需要索引值来从数组中获取数据。
public void getIndexOfSelectedBoth() {
int row = viewer.getTable().getSelectionIndex();
AplotDataModel.getInstance().rebuildDataArray(row);
updateTableViewer();
}
然后我将行的索引传递给我的dataModel类中的方法。它位于dataModel类中,具有数据数组。
我猜我在这里重新发明轮子。必须有更好的方法来完成这个过程。现在我的所有代码到位,我在调用AplotBaseDialog的行中得到一个空指针错误
else {
option = "Both";
abd.getIndexOfSelectedBoth(); <<<<----
}
你能在OptionEditingSupport类中获得索引吗?
答案 0 :(得分:1)
所以你想找到选择了“both”的AplotDatasetData
的索引。
您的ModelProvider
(APlotDataModel
)包含List
个数据,对吗?
每个List
实现方法indexOf(Object)
。因此,您可以使用此方法获取当前对象的索引。
AplotDatasetData selected = ...
int index = AplotDataModel.getInstance().getIndexOf(selected);
并在您的模型中:
public int getIndexOf(APlotDatasetData object)
{
return LIST_HOLDING_YOUR_DATA.indexOf(object);
}