viewpagerindicator中的ListFragment在AsyncTask上失败

时间:2013-04-03 16:43:38

标签: android actionbarsherlock android-viewpager android-listfragment

我正在使用viewpagerindicator和actionsherlock开发一个应用程序。我已经实现了一个标签屏幕但是当我在SherlockListFragment Async中加载数据时,片段会在几次更改片段后消失。

我有四个标签A,B,C,D,当我加载数据异步切换A到B没问题,但是当我切换到C时,A没有显示片段,当我切换到D时没有片段是显示了。

不会抛出任何错误。

My Fragment页面适配器是这样的:

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;
    }

}
}

有什么问题? THX

0 个答案:

没有答案