2
我剛剛在Galaxy Nexus上的Android 4.2上進行了升級,而且ListView似乎比以前慢了4.1。這個bindView方法在4.1上是完美的,在新的4.2上我看到小毛刺。我試圖明確啓用AndroidManifest.xml
的硬件加速,但它沒有多大幫助。 People(Contacts)應用程序在4.2上完美運行,我猜也是通過擴展android.support.v4.widget.CursorAdapter
來實現的。我也已經試圖改變android.support.v4.widget.CursorAdapter
爲android.widget.CursorAdapter
沒有明顯的改善。ListView在4.2上的性能低於4.1
@Override
public void bindView(View view, Context context, Cursor cursor) {
final ViewHolder holder = (ViewHolder) view.getTag();
holder.nameView.setText(cursor.getString(mStreetColumnIndex));
holder.townView.setText(cursor.getString(mTownColumnIndex));
if (mDistanceColumn != null) {
float distance = cursor.getFloat(mDistanceColumn);
String distanceUnit;
if (distance >= 1000) {
distance /= 1000;
distanceUnit = " km";
} else {
distanceUnit = " m";
}
String decimalString = mDecimalFormat.format(distance);
holder.distanceView.setText(decimalString + distanceUnit);
holder.distanceView.setVisibility(View.VISIBLE);
} else {
holder.distanceView.setVisibility(View.GONE);
}
// read only brand first letter to be faster
cursor.copyStringToBuffer(mBrandColumnIndex, mBuffer);
if (mBuffer.sizeCopied > 0) {
if (mBuffer.data[0] == 'a') {
holder.logoImgView.setImageResource(R.drawable.agip);
} else {
holder.logoImgView.setImageResource(R.drawable.papoil);
}
} else {
holder.logoImgView.setVisibility(View.INVISIBLE);
}
}
編輯:添加的行佈局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/row_height"
android:background="@drawable/bg_list_selector"
android:layout_marginRight="@dimen/screen_padding"
android:layout_marginLeft="@dimen/screen_padding"
android:paddingLeft="@dimen/screen_padding">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_marginRight="@dimen/screen_padding"
android:layout_toLeftOf="@+id/txtDistance"
android:orientation="vertical"
>
<TextView
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/list_text_primary_size"
android:textStyle="bold"
/>
<TextView
android:id="@+id/txtTown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/list_text_primary_size"
/>
</LinearLayout>
<TextView
android:id="@+id/txtDistance"
android:layout_toLeftOf="@+id/imgLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textColor="@color/grey_dark"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginRight="@dimen/screen_padding"/>
<ImageView
android:id="@+id/imgLogo"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/agip"
android:background="@color/grey_dark"
/>
</RelativeLayout>
編輯2: 這裏是traceview http://goo.gl/UmS3w 其用http://goo.gl/Yoe1u
你的行佈局如何? – auselen
我已添加行佈局。 – sealskej
你的textviews下有一行嗎? – BigBen3216