假设我们有两种不同的列表项设计。
我希望出现在奇数位置的列表项具有第一个设计,而出现在偶数位置的那些列表项具有第二个设计。
是否可以使用两个XML文件和一个ArrayAdapter来实现此目标?
答案 0 :(得分:0)
要自定义每个项目的外观,您可以覆盖 数组中对象的toString()方法。或者,创建视图 对于每个不是TextView的项目(例如,如果 您需要为每个数组项提供一个ImageView),扩展ArrayAdapter 类并重写getView()以返回所需的视图类型 每个项目。
https://developer.android.com/guide/topics/ui/declaring-layout#AdapterViews
我个人只是使用一个recyclerView.Adapter,您可以使用其中的大量示例轻松地做到这一点。
答案 1 :(得分:0)
您可以循环遍历数组的元素并根据这样的索引来膨胀不同的布局(在Kotlin中):
for ((i, item) in list.withIndex()){
val row = if (i % 2 == 0) LayoutInflater.from(context).inflate() // inflate layout 1
else LayoutInflater.from(context).inflate() // inflate layout 2
...
listView.addView(row)
}
其中布局1和布局2是您2种设计的xml
答案 2 :(得分:0)
是的。您只需要根据位置(偶数/奇数)来增加布局。 在您的arrayadapter的getView()方法中,执行以下操作:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
if (position % 2 == 0) { // is even
convertView = LayoutInflater.from(getContext()).inflate(R.layout.even_layout, parent, false);
} else { // is odd
convertView = LayoutInflater.from(getContext()).inflate(R.layout.odd_layout, parent, false);
}
}
return convertView;
}