我已经使用了列表视图并且有超过65000条记录,但是滚动不够快和流畅,而且如果我一遍又一遍地滚动它,应用程序会崩溃,没有任何错误或任何ANR对话框,有谁能帮我解决这个问题吗?
我正在使用SimpleCursorLoader
和CursorAdapter
,以下是我的代码:
private static class DotCursorLoader extends SimpleCursorLoader {
private DbHelper mHelper;
private CharSequence filter;
public DotCursorLoader(Context context, DbHelper helper,
CharSequence filter) {
super(context);
mHelper = helper;
this.filter = filter;
}
@Override
public Cursor loadInBackground() {
return mHelper.getCursor(filter);
}
}
private class DotCursorAdapter extends CursorAdapter {
private Context mContext;
private Typeface font;
public class ViewHolder {
TextView txtEng, txtGuj;
}
// public DotCursorAdapter(Context context, Cursor c, int flags) {
// super(context, c, flags);
// mContext = context;
// }
public DotCursorAdapter(Context context, Cursor c,
boolean autoRequery) {
super(context, c, autoRequery);
mContext = context;
}
@Override
public void bindView(View view, Context context,
android.database.Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
if (LibConstants.isEnglishEnabled(mActivity)) {
holder.txtEng.setTextColor(settings.getInt(
LibConstants.English_Pref_Color_Key,
Color.BLACK));
// txtEng.setTypeface(Typeface.DEFAULT);
holder.txtEng.setTextSize(Integer.parseInt(settings
.getString("TextSize", "20")));
holder.txtEng.setText(LibConstants.getWord(cursor
.getString(1)));
Utils.setEnglishFont(holder.txtEng, mActivity);
holder.txtGuj.setTextColor(settings.getInt(
LibConstants.Mean_Pref_Color_Key,
getResources().getInteger(
R.color.blue)));
holder.txtGuj.setTypeface(font);
holder.txtGuj.setTextSize(Integer.parseInt(settings
.getString("TextSize", "20")));
holder.txtGuj.setText(LibConstants.getWord(cursor
.getString(2)));
} else {
holder.txtEng.setTextColor(settings
.getInt(LibConstants.Mean_Pref_Color_Key,
getResources().getColor(
R.color.blue)));
holder.txtEng.setTypeface(font);
holder.txtEng.setTextSize(Integer.parseInt(settings
.getString("TextSize", "20")));
holder.txtEng.setText((cursor
.getString(2)));
holder.txtGuj.setTextColor(settings.getInt(
LibConstants.English_Pref_Color_Key,
Color.BLACK));
holder.txtGuj.setTypeface(Typeface.DEFAULT);
holder.txtGuj.setTextSize(Integer.parseInt(settings
.getString("TextSize", "20")));
holder.txtGuj.setText(cursor
.getString(1));
Utils.setEnglishFont(holder.txtGuj, mActivity);
}
}
@Override
public View newView(Context context,
android.database.Cursor cursor, ViewGroup parent) {
View view = LayoutInflater.from(mContext).inflate(
R.layout.list_item, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.txtEng = (TextView) view
.findViewById(R.id.txtEng);
viewHolder.txtGuj = (TextView) view
.findViewById(R.id.txtGuj);
view.setTag(viewHolder);
return view;
}
}