列出两种不同设计的奇/偶项目

时间:2018-07-19 20:29:53

标签: android android-layout listview android-arrayadapter

假设我们有两种不同的列表项设计。

我希望出现在奇数位置的列表项具有第一个设计,而出现在偶数位置的那些列表项具有第二个设计。

是否可以使用两个XML文件和一个ArrayAdapter来实现此目标?

3 个答案:

答案 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;
}