2016-11-14 6 views
0

私はテーブルビューアを持っていて、列に自転車の名前を表示しています。新しい要素をアクションを使って追加すると、新しく追加された要素の代わりに一番上の要素が選択されます。どうすればこれを実現できますか?私はアクションを使用してテーブルビューアに新しく追加された要素をポイントする方法は?

private static class TreeContentProvider implements ITreeContentProvider { 
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { 
     } 

    public void dispose() { 
    } 


    public Object[] getElements(Object inputElement) { 
     return getChildren(inputElement); 
    } 

    public Object[] getChildren(Object parentElement) { 

     if (parentElement instanceof Object[]) { 
      return (Object[]) parentElement; 
     } 

     if (parentElement instanceof Collection) { 
      return ((Collection) parentElement).toArray(); 
      } 

     return new Object[0]; 
     } 


    public Object getParent(Object element) { 
      return null; 
    } 

    public boolean hasChildren(Object element) { 
      return false; 
     } 
    } 

答えて

0

私はこのコードを使って要件を達成しました。新しい要素へのsetselectionは、テーブルに追加した後に新しく追加された要素を指します。

Action add = new Action("Add Values") { 
    @Override 
    public void run() { 
     Bike bike = new Bike(); 
     bike.setName("BMW"); 
     tableViewer.refresh(); 

     tableViewer.setSelection(new StructuredSelection(bike)); 
    } 
}; 
0

treeviewercontentprovider呼び出し、私はSetInput内のリストを持っている

あなたのデータモデルに新しいオブジェクトを追加する必要があります - それは、あなたのコンテンツプロバイダが返すデータです。あなたの現在のコンテンツプロバイダは、入力配列またはリストからデータを取っているようです - この場合、配列/リストを更新して、setInputを再度呼び出さなければなりません。注:ツリーコンテンツプロバイダーを使用してテーブルを作成する必要はありません。

モデルが更新されたら、テーブルビューアrefreshメソッドを呼び出すか、コンテンツプロバイダがadd(Object)メソッドを使用して、新しいオブジェクトについてビュワーに通知することができます。

+0

コンテンツプロバイダの一致を更新 –

関連する問題