1

我正在开发一个带有 viewpagerindicator 和 actionsherlock 的应用程序。我已经实现了一个选项卡屏幕,但是当我在 SherlockListFragment Async 中加载数据时,片段在几个片段更改后消失了。

我有四个选项卡 A、B、C、D,当我加载数据时,异步切换 A 到 B 没问题,但是当我切换到 C 时,A 不显示片段,当我切换到 D 时,不再显示片段.

没有错误被抛出。

我的片段页面适配器是这样的:

class PaginationAdapter extends FragmentPagerAdapter {
    public PaginationAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        return new CustomFragment();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length].toUpperCase(Locale.getDefault());
    }

    @Override
    public int getCount() {
      return CONTENT.length;
    }
}

这是有效的片段:

public final class CustomFragment extends SherlockListFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new SimpleAdapter(getSherlockActivity(), getData(),
         R.layout.descuentos_layout,  new String[] { "title" },
         new int[] { R.id.txtTitle }));
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.custom_list_fragment, null);
    return view;
}

protected List<Map<String, String>> getData() {
        List<Map<String, String>> myData = new ArrayList<Map<String, String>>();

        for (int i = 1; i < 20; i++){
            Map<String, String> temp = new HashMap<String, String>();
            temp.put("title", "Item " + i);
            temp.put("ItemId", String.valueOf(i));
            myData.add(temp);
        }

        return myData;
    }

}

但这不会:

public final class DescuentosFragment extends SherlockListFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ListViewLoaderTask llt = new ListViewLoaderTask();
    llt.execute("");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.descuentos_list_fragment, null);
    return view;
}


private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter> {

    @Override
    protected SimpleAdapter doInBackground(String... str) {

        SimpleAdapter adapter = new SimpleAdapter(getSherlockActivity(), getData() , R.layout.descuentos_layout,new String[] { "title" },
                 new int[] { R.id.list_title });

        return adapter;
    }

    @Override
    protected void onPostExecute(SimpleAdapter adapter) {

        ListView listView = getListView();
        listView.setAdapter(adapter);
    }

    protected List<Map<String, String>> getData() {
        List<Map<String, String>> myData = new ArrayList<Map<String, String>>();

        for (int i = 1; i < 20; i++){
            Map<String, String> temp = new HashMap<String, String>();
            temp.put("title", "Item " + i);
            temp.put("ItemId", String.valueOf(i));
            myData.add(temp);
        }

        return myData;
    }

}
}

怎么了?谢谢

4

0 回答 0