我有一个自定义适配器的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