ListView requestLayout()警告

 KX林 发布于 2023-01-09 08:56

我有一个ListView,其中包含由以下内容组成的项目RelativeLayout:



    


这几项:





    

    

    

        

            

            
        

        

            

            
        

    


ListView得到了CursorAdapter其与ViewHolder模式,它的bindView():

@Override
public void bindView(View view, Context context, Cursor cursor) {
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.nameText.setText(cursor.getString(2) + ", " + cursor.getString(1));
    Cursor values = getContactValues(cursor.getString(0));
    values.moveToLast();
    if (values.moveToFirst()) {
        do {
            if (values.getPosition() == 0) {
                holder.type0Text.setText(replaceType(values.getString(0), context) + ": ");
                holder.num0Text.setText(values.getString(1));
            } else {
                holder.type1Text.setText(replaceType(values.getString(0), context) + ": ");
                holder.num1Text.setText(values.getString(1));
            }
        } while (values.getPosition() < 2 && values.moveToNext());

        int pos = values.getPosition();
        if (pos == 1) {
            holder.type1Text.setVisibility(View.GONE);
            holder.num1Text.setVisibility(View.GONE);
        }
        if (values.getPosition() == 2) {
            holder.type1Text.setVisibility(View.VISIBLE);
            holder.num1Text.setVisibility(View.VISIBLE);
        }
    }
    values.close();

}

它的新视图:

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View view = View.inflate(context, R.layout.contact_item, null);
    ViewHolder holder = new ViewHolder();
    holder.nameText = (TextView) view.findViewById(R.id.textViewName);
    holder.type0Text = (TextView) view.findViewById(R.id.NumLabel0);
    holder.type1Text = (TextView) view.findViewById(R.id.NumLabel1);
    holder.num0Text = (TextView) view.findViewById(R.id.textViewPhoneWork);
    holder.num1Text = (TextView) view.findViewById(R.id.textViewPhoneMobile);
    view.setTag(holder);
    return view;
}

创立了CursorAdapter它的构造:

cadapter = new ContactListCursorAdapter(view.getContext(), namesCursor, 0, readDB, arg2 + 1);

和:

ContactListCursorAdapter(Context context, Cursor c, int flags, SQLiteDatabase readDB, int _ID) {
super(context, c, flags);
this.readDB = readDB;
Cursor tmpc = readDB.query(SQLiteHelper.TABLE, new String[]{SQLiteHelper._ID}, SQLiteHelper.COLUMN_ID + "=?", new String[]{String.valueOf(_ID)}, null, null, null, null);
tmpc.moveToFirst();
this.list = tmpc.getString(tmpc.getColumnIndex(SQLiteHelper._ID));
}

每当View显示或更新时,我都会收到类型的警告:

14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d97830 V.ED.... ......ID 24,24-364,105 #7f09003f app:id/textViewName} during layout: running second layout pass
14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d988b8 V.ED.... ......ID 0,0-165,52 #7f090043 app:id/NumLabel0} during layout: running second layout pass
14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d98ce0 V.ED.... ......ID 165,0-488,52 #7f090044 app:id/textViewPhoneWork} during layout: running second layout pass
14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d9b380 V.ED.... ......ID 24,24-467,105 #7f09003f app:id/textViewName} during layout: running second layout pass
14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d9c408 V.ED.... ......ID 0,0-165,52 #7f090043 app:id/NumLabel0} during layout: running second layout pass
14:25:33.543  27597-27597/com.app W/View? requestLayout() improperly called by android.widget.TextView{41d9c830 V.ED.... ......ID 165,0-488,52 #7f090044 app:id/textViewPhoneWork} during layout: running second layout pass

我不知道这个错误发生的地方......以及为什么.

它似乎com.android.contacts也遭受同样的问题.

06-16 15:12:10.113  27522-27522/com.android.contacts W/View? requestLayout() improperly called by android.widget.TextView{41ed52f8 V.ED.... ......ID 216,90-936,149 #7f0c000e app:id/cliv_name_textview} during layout: running second layout pass

k1slay.. 6

好吧,我知道这是一个旧线程,但是如果其他人有同样的问题,那么由于fastScrollEnabled导致我的情况.

要摆脱它只需删除

    android:fastScrollEnabled="true"
    android:fastScrollAlwaysVisible="true"

希望它能帮助任何人.

1 个回答
  • 好吧,我知道这是一个旧线程,但是如果其他人有同样的问题,那么由于fastScrollEnabled导致我的情况.

    要摆脱它只需删除

        android:fastScrollEnabled="true"
        android:fastScrollAlwaysVisible="true"
    

    希望它能帮助任何人.

    2023-01-09 09:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有