gpt4 book ai didi

android - ListView 中项目的不同布局

转载 作者:行者123 更新时间:2023-11-29 22:18:49 25 4
gpt4 key购买 nike

我有一些扩展的游标适配器,在女巫中我用列表中项目的上下文和资源布局调用 super,就像这样。

在我的适配器中调用 super:

super(activity, viewResource, c, false);

创建我的适配器:

new MyCursorAdapter(this, null, R.layout.my_list_item, null);

我想要实现的是我用油漆制作的愚蠢模型。换句话说,我希望对项目进行不同类型的布局,例如,我希望所有偶数项都具有 layout1,而所有奇数项都具有 layout2。到目前为止,在这种情况下,我只能提供一种布局 R.layout.my_list_item。是否可以动态更改布局?是否可以构造适配器以具有不同布局的项目?我的目标是动态选择项目的布局。我不希望所有项目都只有一种布局,我想要示例二...

谢谢

enter image description here

最佳答案

是的,不过您将不得不做两件事。首先,重写适配器中的 getItemViewType() 方法,这样您就可以确保您的 bindView() 只获取适合列表中特定位置的 View ,如下所示:

public int getItemViewType(int position){
if(correspondsToViewType1(position)){
return VIEW_TYPE_1;
}
else(correspondsToViewType2(position)){
return VIEW_TYPE_2;
}
//and so on and so forth.
}

一旦你这样做了,只需在你的 bindView() 中进行一个简单的测试,检查它应该收到什么类型的 View 并相应地设置如下:

public void bindView(View view, Context context, Cursor cursor){
if(correspondsToViewType1(cursor)){
//Now we know view is of a particular type and we can do the
//setup for it
}
else if(correspondsToViewType2(cursor){
//Now we know view is of a different type and we can do the
//setup for it
}
}

请注意,对于 correpondsToViewType,您将不得不采用不同的方法,一种采用游标,另一种采用 int(表示位置)。这些的实现将根据您想要执行的操作而有所不同。

请注意,以这种方式执行操作将允许您重用可能回收的 View 。如果您不这样做,您的应用将受到巨大性能影响。滚动会非常不稳定。

关于android - ListView 中项目的不同布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com