gpt4 book ai didi

java - ListView 中的行逐行膨胀

转载 作者:行者123 更新时间:2023-12-01 12:15:19 24 4
gpt4 key购买 nike

这是必要的代码。我试图对同一 ListView 中的行使用两个不同的 View 。我希望一组数组列表膨胀为行,然后是另一组。但发生的情况是行逐行膨胀。

代码:

    @Override
public int getItemViewType(int position) {
if (position < (mContactsNumber.size())) {
a = 0;
return a;
} else {
a = 1;
return a;
}
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
final int pos = i;
int type = getItemViewType(i);
View v = view;
if (view == null) {
switch (type) {
case 0:
v = mInflater.inflate(R.layout.contacts_row, null);
name = (TextView) v.findViewById(R.id.contact_name);
name.setText(mContactsNames.get(i));
break;
case 1:
v = mInflater.inflate(R.layout.manual_row, null);
mManual = (TextView) v.findViewById(R.id.manual_number);
mSwitch = (SwitchCompat) v.findViewById(R.id.manual_switch);
mManual.setText(mPermanentManual.get(i));
mSwitch.setTag(i);
try {
if (mManualList.contains(mPermanentManual.get(i))) {
mSwitch.setChecked(true);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
return v;
}

最佳答案

我认为当 convertView 不为 null 时会出现问题,因为您的 getView 方法中没有 else 语句。

您可以使用ItemViewType

将您的适配器更改为如下所示:

private class MyCustomAdapter extends BaseAdapter {

private static final int TYPE_ITEM_0 = 0;
private static final int TYPE_ITEM_1 = 1;
private static final int TYPE_MAX_COUNT = 2;

...


@Override
public int getItemViewType(int position) {
return (position < (mContactsNumber.size()) ? TYPE_ITEM_0 : TYPE_ITEM_1;
}

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


@Override
public String getItem(int position) {
return mData.get(position);
}

...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);

if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_ITEM_0:
convertView = mInflater.inflate(R.layout.item1, null);
holder.textView = (TextView)convertView.findViewById(R.id.text);
break;
case TYPE_ITEM_1:
convertView = mInflater.inflate(R.layout.item2, null);
holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(mData.get(position));
return convertView;
}

}

关于java - ListView 中的行逐行膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053702/

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