У меня есть ListView с пользовательским адаптером, который создает строки, содержащие TextView, которые могут содержать 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;
}
После прокрутки некоторые однострочные текстовые представления выглядят выровненными по верху строки, а некоторые двухстрочные текстовые представления находятся внизу строки. Кажется, проблема возникает, когда строке, в которой изначально содержалось 2-строчное TextView, дается одна строка текста, и наоборот.
Я думал, что установка Gravity в getView решит эту проблему с перезапуском строк, но это должно быть что-то другое. Что если я создаю TextView программно каждый раз, когда строка перерабатывается? Это то, что нужно, чтобы «сбросить» его?