gpt4 book ai didi

java - 设置第一个 ListView 项目的布局

转载 作者:行者123 更新时间:2023-12-02 03:13:19 25 4
gpt4 key购买 nike

因此,我尝试使用以下代码为我的第一个 ListItem 元素设置不同的布局资源:

int type;
@Override
public int getItemViewType(int position) {

if(position==0) {
type = R.layout.queue_item_next;
} else {
type = R.layout.queue_item;
}

return type;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
}

但是,此代码会出现一些意外行为。由于某种原因,ListView 的最后一个元素也被设置为具有此替代布局,我不知道为什么。

什么可能导致这种情况发生?

谢谢。

最佳答案

由于 getItemViewType() 返回的值大于 View 类型的数量,因此出现了问题。您可以使用下面的代码,对我来说工作得很好。

@Override
public int getItemViewType(int position) {

if(position==0) {
return 0;
}
return 1;
}

@Override
public int getViewTypeCount() {
return 2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int type = getItemViewType(position);
if(type == 0)
convertView = (View) inflater.inflate(R.layout.first_layout, parent, false);
else
convertView = (View) inflater.inflate(R.layout.second_layout, parent, false);
}
}

注意:如果只有第一个 View 不同,那么最好的选择是使用函数 listview.addHeaderView() 函数使用 headerView link

关于java - 设置第一个 ListView 项目的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40735386/

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