【发布时间】:2015-08-27 16:05:26
【问题描述】:
我的自定义 ArrayAdapter 有一些问题。
我有两种不同的布局,我根据对象值应用于列表项。每次我滚动某些项目时,都会更改应应用R.layout.layout1 的位置,请使用R.layout.layout2 或其他方式。
我想到了在 XML 文件中缓存布局的一些问题。
问题我无法弄清楚为什么布局在滚动时会发生变化。
这是我的 Java 代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (this.items.get(position).getId() == this.id)
convertView = layoutInflater.inflate(R.layout.layout1);
else
convertView = layoutInflater.inflate(R.layout.layout2);
holder = new ViewHolder();
holder.textView1 = (TextView) convertView.findViewById(R.id.textViewItem1);
holder.textView2 = (TextView) convertView.findViewById(R.id.textViewItem2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView1.setText(this.items.get(position).getInfo1());
holder.textView2.setText(this.items.get(position).getInfo2());
return convertView;
}
public static class ViewHolder {
public TextView textView1;
public TextView textView2;
}
这里是 ListView XML 部分:
<ListView
android:id="@+id/listViewMessages"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:divider="@null"
android:dividerHeight="0dp"
android:stackFromBottom="true"
android:transcriptMode="normal" />
【问题讨论】:
-
错误/问题是什么...?这是一个声明
-
问题我无法弄清楚为什么布局在滚动时会发生变化。
-
所以为了清楚起见,在你的问题上加上这个;)
标签: java android android-layout android-listview