我有一个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
,我正在考虑做亚当鲍威尔最后建议的事情 - 动态填充和扩展 aLinearLayout
内部ScrollView
并简单地使用它。我的数据目前介于 0 到 30 个项目之间(我尚未对此进行测试,因此不知道性能差异可能是什么)。但是,这些界限可能并不总是保持不变——所以如果可以的话,我想解决这个问题。