我有一个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"
希望它能帮助任何人.
好吧,我知道这是一个旧线程,但是如果其他人有同样的问题,那么由于fastScrollEnabled导致我的情况.
要摆脱它只需删除
android:fastScrollEnabled="true" android:fastScrollAlwaysVisible="true"
希望它能帮助任何人.