カスタムを使用して入力するオブジェクトListFragment
のリストを含むがあります。地震のマグニチュードが特定の値を超えているかどうかに応じて、各要素が「強調表示」されるかどうかが決まります。問題は、スクロール後に「強調表示された」行の色が他の行に適用されることです。これは、で使用されているキャッシュに関係していると思われます。どうすればこれを防ぐことができますか?Earthquake
ArrayAdapter
ListView
これが私のクラスのgetView
メソッドです:EarthquakeArrayAdapter
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, parent, false);
}
Earthquake quake = mQuakes.get(position);
if (quake != null) {
TextView itemView = (TextView) convertView.findViewById(R.id.magnitude);
if (itemView != null) {
itemView.setText(quake.getFormattedMagnitude());
if (quake.getRoundedMagnitude() >= mMinHighlight)
itemView.setTextColor(Color.RED);
}
// Set other views in the layout, no problems here...
}
return convertView;
}
そして、ここに私のrow.xml
レイアウトファイルがあります:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/magnitude"
style="@style/ListFont.Magnitude" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/date"
style="@style/ListFont.NonMagnitude"
android:gravity="center_horizontal|top"
android:textSize="18sp" />
<TextView
android:id="@+id/location"
style="@style/ListFont.NonMagnitude"
android:gravity="center_horizontal|bottom"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
私はウィジェットでこのビデオを見てきましたがListView
、Adam Powell が最後に提案していることを実行することを検討していLinearLayout
ますScrollView
。現在、私のデータは 0 ~ 30 項目に制限されています (これはまだテストしていないため、パフォーマンスの違いがどうなるかはわかりません)。ただし、これらの境界は常に同じであるとは限らないため、可能であればこれを解決したいと考えています。