在动态创建的GridView中拖放

时间:2014-01-06 16:51:02

标签: android gridview dynamic android-tabhost

我已经动态创建了标签,然后我以编程方式添加了一个带有n拖放控制器的GridView。如果它只有一个选项卡,它都可以工作,但是如果你滚动到第二个选项卡,重新排列项目,然后返回,它会崩溃。我相信它,因为两个选项卡都使用相同的mDragController。它应该相当容易修复,任何想法如何使它们使用单​​独的控制器?

private DragController mDragController;  
private boolean mLongClickStartsDrag = true;   // If true, it takes a long click 

protected void onCreate(Bundle savedInstanceState) {
...

    final TabHost Tabs = (TabHost) findViewById(android.R.id.tabhost);
    Tabs.setup();
    int count;
        for (count =0;count < 2;count++){

            ...

            final int passedTabId = count; 
            NewTab.setContent(new TabHost.TabContentFactory()
            {
                public View createTabContent(String tag)
                {

                   ...

                    GridView dynGrid = new GridView(ManageRooms.this);
                    ...
                    mDragController = new DragController (ManageRooms.this);
                    dynGrid.setAdapter (new ImageCellAdapter (ManageRooms.this, mDragController));
                    layout.addView(dynGrid);


                   return layout;
                }

            });

            Tabs.addTab(NewTab);
        }
}

public boolean startDrag (View v) {
    v.setOnDragListener (mDragController);
    mDragController.startDrag (v);
    return true;
}
} 

1 个答案:

答案 0 :(得分:0)

解决方案:创建一个mDragControllers数组;

private DragController[] mDragController = new DragController[3];

然后根据当前Tab的id访问每个。