Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有CustomCursorAdapter滚动的Listview不平滑_Android_Listview_Cursor_Android Cursoradapter - Fatal编程技术网

Android 带有CustomCursorAdapter滚动的Listview不平滑

Android 带有CustomCursorAdapter滚动的Listview不平滑,android,listview,cursor,android-cursoradapter,Android,Listview,Cursor,Android Cursoradapter,我正在使用CustomCursorAdapter创建列表视图。Listview滚动缓慢。这是我使用的代码 public class CustomCursorAdapter extends CursorAdapter { private ViewHolder holder=null; private Activity mContext=null; private ArrayList<Boolean> mCheckedList=null; private Button mCancel=

我正在使用CustomCursorAdapter创建列表视图。Listview滚动缓慢。这是我使用的代码

public class CustomCursorAdapter extends CursorAdapter {

private ViewHolder holder=null;
private Activity mContext=null;
private ArrayList<Boolean> mCheckedList=null;
private Button mCancel=null;
private Cursor mCursor = null;
private DatabaseHandler mDbHandler;
private int dStatus;
private LayoutInflater inflater;

public CustomCursorAdapter(Activity context) {
    super(context, cursor);
    this.mCursor = cursor;
    this.mContext = context;
    this.mDbHandler = new DatabaseHandler(context);
    this.inflater = LayoutInflater.from(context);
}


@Override
public void bindView(View view, Context arg1, Cursor c) {
    holder=(ViewHolder) view.getTag();
    long duration = c.getLong(c.getColumnIndex(DatabaseHandler.DURATION));

    holder.checkToSend.setTag(c.getPosition());
    holder.editDitn.setTag(c.getPosition());
    holder.pendingLayout.setTag(c.getPosition());
    holder.name.setText(c.getString(c.getColumnIndex(DatabaseHandler.NAME)));

    holder.worktype.setText(c.getString(c.getColumnIndex(DatabaseHandler.WORKTYPE)));
    holder.comment.setText(c.getString(c.getColumnIndex(DatabaseHandler.COMMENT)));
    int prio = c.getInt(c.getColumnIndex(DatabaseHandler.PRIORITY));
    if(prio == 1)
        holder.priority.setVisibility(View.VISIBLE);
    else if(prio == 0)
        holder.priority.setVisibility(View.INVISIBLE);
    boolean check = mCheckedList.get(c.getPosition());
    holder.checkToSend.setChecked(check);
    onEnableOrDisable(true);
    int dictStat = c.getInt(c.getColumnIndex(DatabaseHandler.STATUS));
    if(c.getInt(c.getColumnIndex(DatabaseHandler.ISACTIVE))==1 || ((dictStat == 2 || dictStat == 3)&&!DMApplication.isEditMode()))
        holder.checkToSend.setVisibility(View.GONE);
    else
        holder.checkToSend.setVisibility(View.VISIBLE);

    switch (dictStat) {
    case 1:
        holder.status.setText("");
        if(DMApplication.isOnEditState()&&DMApplication.getTabPos()==1)
            holder.checkToSend.setVisibility(View.GONE);
        else
            holder.checkToSend.setVisibility(View.VISIBLE);
        onEnableOrDisable(true);
        break;
    case 111:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
        onEnableOrDisable(false);
        holder.status.setText(mContext.getResources().getString(R.string.Property_sending));
        break;
    case 222:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
        holder.status.setText(mContext.getResources().getString(R.string.Property_Timeout));
        onEnableOrDisable(true);
        break;
    case 333:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
        holder.status.setText(mContext.getResources().getString(R.string.Property_Retrying));
        onEnableOrDisable(false);
        break;
    case 444:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
        holder.status.setText(mContext.getResources().getString(R.string.Property_Conversion_Failed));
        onEnableOrDisable(true);
        break;
    case 555:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
        onEnableOrDisable(false);
        holder.status.setText(mContext.getResources().getString(R.string.Property_Waiting_Send));
        break;
    case 20:
        holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
        holder.status.setText(mContext.getResources().getString(R.string.property_sending_failed));
        onEnableOrDisable(true);
        break;
    case 3:
        holder.status.setText(mContext.getResources().getString(R.string.Property_Via_Email));
        onEnableOrDisable(true);
        break;

    default:
        holder.status.setText("");
        onEnableOrDisable(true);
        break;
    }
    int isflashair = c.getInt(c.getColumnIndex(DatabaseHandler.ISFLASHAIR));
    String formattedDur = Utilities.getDurationInTimerFormat(duration);
    if(isflashair == 0){
        holder.imgflash.setVisibility(View.GONE);
        holder.editDitn.setVisibility(View.VISIBLE);
        holder.pendingLayout.setClickable(true);
        if(dictStat == 2 || dictStat == 3){
            holder.date.setText(DMApplication.getLocalizedDateAndTime(c.getString(c.getColumnIndex(DatabaseHandler.SENT_DATE)))+"  "
                +formattedDur);
        }else{
            holder.date.setText(DMApplication.getLocalizedDateAndTime(c.getString(c.getColumnIndex(DatabaseHandler.REC_END_DATE)))+"  "
                    +formattedDur);
        }
    }else{
        holder.imgflash.setVisibility(View.VISIBLE);
        holder.editDitn.setVisibility(View.GONE);
        holder.pendingLayout.setClickable(false);
        if(dictStat == 2 || dictStat == 3){
            holder.date.setText(DMApplication.getLocalizedDateAndTime(c.getString(c.getColumnIndex(DatabaseHandler.SENT_DATE))));
        }else{

            holder.date.setText(DMApplication.getLocalizedDateAndTime(c.getString(c.getColumnIndex(DatabaseHandler.REC_END_DATE))));
        }

    }

    notifyDataSetChanged();
}
private void  onEnableOrDisable(boolean enable)
{
    if(DMApplication.getTabPos()==1)
    {
        if(enable)
        {
            holder.checkToSend.setEnabled(true);
            holder.pendingLayout.setEnabled(true);
            holder.editDitn.setEnabled(true);
        }
        else
        {
            holder.checkToSend.setVisibility(View.GONE);
            holder.checkToSend.setEnabled(false);
            holder.pendingLayout.setEnabled(false);
            holder.editDitn.setEnabled(false);
        }
    }
}

@Override
public View newView(Context arg0,final Cursor cursor, ViewGroup parent) {
    View retView = inflater.inflate(R.layout.tab_list_layout, parent, false);
    holder = new ViewHolder();
    holder.name = (TextView) retView.findViewById(R.id.text_tab_list_dictation_name);
    holder.worktype = (TextView) retView.findViewById(R.id.text_tab_list_worktype);
    holder.comment = (TextView) retView.findViewById(R.id.text_tab_list_comment);
    holder.date = (TextView) retView.findViewById(R.id.text_tab_list_dictation_date);
    holder.status = (TextView) retView.findViewById(R.id.text_tab_list_dictation_status);
    holder.checkToSend = (CheckBox) retView.findViewById(R.id.chkToSend);
    holder.priority = (ImageView) retView.findViewById(R.id.img_tab_list_priority);
    holder.editDitn = (ImageButton) retView.findViewById(R.id.img_tab_list_edit_dictation);
    holder.imgflash = (ImageView) retView.findViewById(R.id.img_is_flashair);
    holder.pendingLayout=(RelativeLayout)retView.findViewById(R.id.relativeTabDictateDetails);
    holder.pendingLayout.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            int pos = (Integer) v.getTag();             
            Cursor c = (Cursor) getItem(pos);
            // some code

        }
    });
    holder.checkToSend.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            int pos = (Integer) v.getTag();
            CheckBox chk = (CheckBox) v;
            // some code
        }
    });
    holder.editDitn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int pos = (Integer) v.getTag();
            Cursor c = (Cursor) getItem(pos);
            // some code
        }
    });
    retView.setTag(holder);
    return retView;
}

static class ViewHolder{
    TextView name = null;
    TextView date = null;
    TextView worktype = null;
    TextView comment = null;
    TextView status = null;
    CheckBox checkToSend = null;
    ImageView priority = null;
    RelativeLayout pendingLayout=null;
    ImageButton editDitn = null;
    ImageView imgflash = null;
}
}
公共类CustomCursorAdapter扩展了CursorAdapter{
私有ViewHolder=null;
私有活动mContext=null;
private ArrayList mCheckedList=null;
专用按钮mCancel=null;
私有游标mCursor=null;
私有数据库处理程序mDbHandler;
私有数据状态;
私人充气机;
公共CustomCursorAdapter(活动上下文){
超级(上下文、游标);
this.mCursor=游标;
this.mContext=上下文;
this.mDbHandler=新的DatabaseHandler(上下文);
this.inflater=layoutiner.from(上下文);
}
@凌驾
公共void bindView(视图,上下文arg1,光标c){
holder=(ViewHolder)view.getTag();
long duration=c.getLong(c.getColumnIndex(DatabaseHandler.duration));
holder.checkToSend.setTag(c.getPosition());
holder.editDitn.setTag(c.getPosition());
holder.pendingLayout.setTag(c.getPosition());
holder.name.setText(c.getString(c.getColumnIndex(DatabaseHandler.name));
holder.worktype.setText(c.getString(c.getColumnIndex(DatabaseHandler.worktype));
setText(c.getString(c.getColumnIndex(DatabaseHandler.comment));
intprio=c.getInt(c.getColumnIndex(DatabaseHandler.PRIORITY));
如果(prio==1)
holder.priority.setVisibility(视图可见);
else if(prio==0)
holder.priority.setVisibility(视图不可见);
布尔检查=mCheckedList.get(c.getPosition());
holder.checkToSend.setChecked(检查);
onenableordinable(真);
int dictStat=c.getInt(c.getColumnIndex(DatabaseHandler.STATUS));
if(c.getInt(c.getColumnIndex(DatabaseHandler.ISACTIVE))=1 | |((dictStat==2 | | dictStat==3)和&!DMApplication.isEditMode())
holder.checkToSend.setVisibility(View.GONE);
其他的
holder.checkToSend.setVisibility(视图可见);
开关(dictStat){
案例1:
holder.status.setText(“”);
if(DMApplication.isOnEditState()&&DMApplication.getTabPos()==1)
holder.checkToSend.setVisibility(View.GONE);
其他的
holder.checkToSend.setVisibility(视图可见);
onenableordinable(真);
打破
案例111:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
onEnableOrDisable(假);
holder.status.setText(mContext.getResources().getString(R.string.Property_sending));
打破
案例222:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
holder.status.setText(mContext.getResources().getString(R.string.Property_Timeout));
onenableordinable(真);
打破
案例333:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
holder.status.setText(mContext.getResources().getString(R.string.Property_重试));
onEnableOrDisable(假);
打破
案例444:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
holder.status.setText(mContext.getResources().getString(R.string.Property_转换_失败));
onenableordinable(真);
打破
案例555:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_blue));
onEnableOrDisable(假);
holder.status.setText(mContext.getResources().getString(R.string.Property_Waiting_Send));
打破
案例20:
holder.status.setTextColor(mContext.getResources().getColor(R.color.status_red));
holder.status.setText(mContext.getResources().getString(R.string.property_sending_failed));
onenableordinable(真);
打破
案例3:
holder.status.setText(mContext.getResources().getString(R.string.Property通过电子邮件));
onenableordinable(真);
打破
违约:
holder.status.setText(“”);
onenableordinable(真);
打破
}
int-isflashair=c.getInt(c.getColumnIndex(DatabaseHandler.isflashair));
String formattedDur=Utilities.GetDurationIndimerFormat(持续时间);
如果(isflashair==0){
holder.imgflash.setVisibility(View.GONE);
holder.EdittN.setVisibility(视图可见);
支架。悬挂布局。可点击设置(真);
if(dictStat==2 | | dictStat==3){
holder.date.setText(DMApplication.GetLocalizedDataAndTime(c.getString(c.getColumnIndex(DatabaseHandler.SENT_date)))+“”
+形成的dur);
}否则{
holder.date.setText(DMApplication.GetLocalizedDataAndTime(c.getString(c.getColumnIndex(DatabaseHandler.REC\u END\u date))+“”
+形成的dur);
}
}否则{
holder.imgflash.setVisibility(View.VISIBLE);
holder.editDitn.setVisibility(View.GONE);
支架。悬挂布局。可点击设置(错误);
if(dictStat==2 | | dictStat==3){
holder.date.setText(DMApplication.getLocalizedDataAndTime(c.getString(c.getColumnIndex(DatabaseHandler.SENT_date)));
}否则{
holder.date.setText(DMApplication.getLocalizedDataAndTime(c.getString(c.getColumnIndex(DatabaseHandler.REC_END_date)));
}
}
notifyDataSetChanged();
}
私有void onEnableOrDisable(布尔启用)
{
if(DMApplication.getTabPos()==1)
{
如果(启用)
{
holder.checkToSend.setEnabled(真);
holder.pendingLayout.setEnabled(真);
holder.editDitn.setEnabled(真);
}
其他的
{
holder.checkToSend.setVisibility(View.GONE);
holder.checkToSend.setEnabled(假);
holder.pendingLayout.setEnabled(假);
holder.editDitn.setEnabled(假);
}
}
}
@凌驾
公共视图newView(上下文arg0,最终光标,视图组父级){
视图retView=充气机。充气(R.layout.tab\u list\u布局,父级,false);
持有者=
@Override
    public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    View retView = convertView;

    if (convertView == null) {
        retView = inflater.inflate(R.layout.tab_list_layout, parent, false);
        holder = new ViewHolder();
        holder.name = (TextView) retView.findViewById(R.id.text_tab_list_dictation_name);
        holder.worktype = (TextView) retView.findViewById(R.id.text_tab_list_worktype);
        holder.comment = (TextView) retView.findViewById(R.id.text_tab_list_comment);
        holder.date = (TextView) retView.findViewById(R.id.text_tab_list_dictation_date);
        holder.status = (TextView) retView.findViewById(R.id.text_tab_list_dictation_status);
        holder.checkToSend = (CheckBox) retView.findViewById(R.id.chkToSend);
        holder.priority = (ImageView) retView.findViewById(R.id.img_tab_list_priority);
        holder.editDitn = (ImageButton) retView.findViewById(R.id.img_tab_list_edit_dictation);
        holder.imgflash = (ImageView) retView.findViewById(R.id.img_is_flashair);
        holder.pendingLayout=(RelativeLayout)retView.findViewById(R.id.relativeTabDictateDetails);
        holder.pendingLayout.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int pos = (Integer) v.getTag();             
                Cursor c = (Cursor) getItem(pos);
                // some code

            }
        });
        holder.checkToSend.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int pos = (Integer) v.getTag();
                CheckBox chk = (CheckBox) v;
                // some code
            }
        });
        holder.editDitn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int pos = (Integer) v.getTag();
                Cursor c = (Cursor) getItem(pos);
                // some code
            }
        });
        retView.setTag(holder);
       }

     else {

    holder = (ViewHolder) retView.getTag();
            }
    return retView ;
    }