ListView - 修改行布局

时间:2015-10-29 00:59:21

标签: android listview android-adapter

enter image description here

大家好!

我正在尝试创建一个具有相同行布局的listView。但我正在动态更改行的元素。从上图中,您可以看到我使用行填充listView,但行上的按钮必须根据行的类型而不同。行中的其余信息是相同的。

有没有办法可以将标志传递给适配器,以便根据行类型添加/删除布局中的元素?我的适配器扩展了BaseAdapter

2 个答案:

答案 0 :(得分:1)

此信息应包含在适配器知道的模型中。

getView(..)方法中,您应该能够检查<model>.getType()是否是特定类型。如果是这样,您可以设置布局中特定组件的可见性并相应地更改UI。

如果类型不是您的响应的一部分,您可以在适配器中保留Map<Model, Type>并在有新数据时更新适配器,并且有一个方便的方法将其转换为模型对象列表在UI中显示。

答案 1 :(得分:1)

是的,让我的ListView适配器在我的回答中采用包含标志的模型。 如果要使用GSON等解析器将JSON对象转换为特定的POJO,这应该可以工作。如果您尝试从JSON对象加载适配器,我建议不要这样做,祝您好运。

public class Row{
private RowType rowType;
//all other row attributes
}

public enum RowType{
YesNo, Cancel, //all other possible scenarios
}

public class YourAdapter extends BaseAdapter{
private List<Row> rowsToPopulate;

//Override appropriate methods

@Override
public View getView(int position, View convertView, ViewGroup parent) {
//load your view etc....

//Check the flag to load appropriate fragment
switch(rowsToPopulate.get(position).getRowType()){
case YesNo:
//Load your yes no fragment to your row view
case Cancel:
//Load your cancel fragment to your row view
}

return yourView;
}