TableViewer从ArrayLists Eclipse插件添加数据



我有下面的代码来创建TableViewer

TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);

如何创建ContentProvider以便在表的列中添加数组列表中的数据?我有这些清单,我想把它们添加到表格中。

表中每行确实需要一个对象。

如果您创建的数组或ArrayList每行包含一个对象,则可以使用标准的ArrayContentProvider:

viewer.setContentProvider(ArrayContentProvider.getInstance());

行数据类可能类似于:

class RowData
{
  private String [] cols;
  RowData(String [] theCols)
  {
    cols = theCols;
  }
  String getColumn(int index)
  { 
    return cols[index];
  }
}

从现有列表中创建一个数组:

RowData [] rows = new RowData [listSize];
for (int i = 0; i < listSize; i++)
 {
   rows[i] = new RowData(new String [] {col0List.get(i), col1list.get(i), ...});
 }

将其设置为查看器的输入:

 viewer.setInput(rows);

但是只有在查看器中设置了内容提供商和标签提供商之后才能执行此操作。

使用实现ITableLabelProvider:的标签提供程序

 class MyLabelProvider extends LabelProvider implements ITableLabelProvider
 {
   @Override
   public String getColumnText(Object element, int columnIndex)
   {
     RowData rowData = (RowData)element;
     return rowData.getColumn(columnIndex);
   }
   @Override
   public Image getColumnImage(Object element, int columnIndex)
   {
     return null;
   }
 }