我正在尝试创建一个片段,该片段在开始时将显示一个 ProgressBar,其他线程将调用一个函数,该函数将带来一些信息(从远程服务器带来的信息 - 需要几秒钟)来填充一些将添加到片段中的视图. 我试图将视图添加到片段中,但出现了一个异常,即我无法更改不在主线程上的线程上的 UI。所以我在 UI 线程上运行它,但这里的问题是 UI 堆叠,直到所有信息从服务器带回的那一刻。
这是我的代码:
public class MainSalePage extends SherlockFragment
{
protected View maneSalePage;
protected List<SaleObj> saleList;
protected int numberOfsalesOnScreen;
protected LinearLayout saleConteiner;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
maneSalePage = inflater.inflate(R.layout.main_page_fragment, container, false);
numberOfsalesOnScreen = 0;
saleConteiner = (LinearLayout) maneSalePage.findViewById(R.id.salesContainer);
getActivity().runOnUiThread(new Runnable()
{
@Override
public void run()
{
SaleService saleService = new SaleService();
saleList = saleService.getNextSales(numberOfsalesOnScreen); //the operation that takes time.
for(int i = 0; i < saleList.size(); i++)
{
SaleRow saleRow = new SaleRow(getActivity());
saleRow.populateWith(saleList.get(i));
saleConteiner.addView(saleRow);
}
}
});
return maneSalePage;
}
}
如何在从服务器获取所有数据之前显示片段而不堆叠 UI?
谢谢!