我有一個自定義適配器的ListView創建包含TextViews,可能有1或2行文本的行。滾動後滾動列表視圖中的佈局
news_row.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="48dip"
android:padding="6dp"
android:textSize="14sp">
</TextView>
</LinearLayout>
適配器:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.news_row, null);
}
else {
TextView titleView = (TextView)convertView.findViewById(R.id.text);
System.out.println(titleView.getText() + " to **" +
stories.get(position).title);
}
TextView titleView = (TextView)convertView.findViewById(R.id.text);
titleView.setText(stories.get(position).title);
titleView.setGravity(Gravity.CENTER_VERTICAL);
return convertView;
}
滾動之後,一些單行TextViews出現對齊行的頂部,和一些2線TextViews處於該行的底部。當最初包含2行TextView的行被賦予單行文本時,問題似乎就會發生,反之亦然。
我曾經認爲在getView中設置重力會解決這個行回收問題,但它必須是別的東西。如果我每次在行被回收時以編程方式創建TextView,該怎麼辦?這是什麼需要「重置」它?
我不明白 - 如何設置初始膨脹時的線數?無論行數是多少,我都希望文本居中。本教程暗示我想用不同的佈局來獲得這個結果,這對我來說沒有意義。我甚至不知道如何確定TextView需要多少行來呈現文本。 – 2011-03-08 03:05:07