3

我有自定义cursoradapter的列表视图。它包含几百个项目。向下滚动是平稳而快速的,但是滚动备份一直冻结。我不会在UI线程中加载图像或某些操作。只能从光标获得几个值并将其设置为文字视图Listview滚动冻结

private class EpisodesAdapter extends CursorAdapter { 
     LayoutInflater inflater; 
     public EpisodesAdapter(Context context) { 
      super(context, null, false); 
      inflater = (LayoutInflater)  context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     @Override 
     public View newView(Context context, Cursor cursor, ViewGroup parent) { 

      View view = inflater.inflate(R.layout.list_item_episode, parent, false); 

      view.setBackgroundResource(R.drawable.abs__list_selector_holo_light); 
      return view; 
     } 

     @Override 
     public void bindView(View view, final Context context, final Cursor cursor) { 
      final String title = cursor.getString(EpisodesQuery.EPISODE_TITLE); 
      final String episodeId = cursor.getString(EpisodesQuery.EPISODE_ID); 
      final String time = cursor.getString(EpisodesQuery.EPISODE_PUBLISHED_AT); 
      final String episodeUrl = cursor.getString(EpisodesQuery.EPISODE_URL); 
      final int stateId = cursor.getInt(EpisodesQuery.EPISODE_STATE_ID); 

         ((TextView) view.findViewById(R.id.title)).setText(title); 
         ...... 
       } 
} 

有些想法可能导致此问题的原因是什么?

+0

如果应用程序完全冻结,可能会有logcat消息来解释问题。你有看到什么吗? –

+0

您是否尝试过像视图持有者或异步任务加载器一般的性能改进? – jsmith

+0

我认为你需要在使用光标后关闭它。检查logcat它可能显示一些信息关于为什么它的冻结 –

回答

0

ListView empty if SimpleCursorAdapter closed()。这个链接可能会回答关闭游标的地方。如果它顺利地向下滚动,我看不到在滚动时冻结的理由。我很好奇你面临的问题。

+0

cursoradapter不需要查看者。 newview和bindview已经处理它。正如我告诉。向下滚动是顺利的,只有当我滚动它开始冻结。 – vandzi

1

我想我明白了。游标中的一列包含一些blob数据。当我从查询选择中删除此列时,它会顺利地向上滚动。感谢所有的答案。