[英]Custom ListView Repeating Itself
Here is my getView()
method: 这是我的
getView()
方法:
public View getView(final int pos, View convertView, ViewGroup parent) {
final ViewHolder holder;
int rowType = getItemViewType(pos);
if (convertView == null) {
switch (rowType) {
case 1:
convertView = mInflater.inflate(
R.layout.single_class_select_row_header, parent, false);
holder = new ViewHolder();
holder.label = (TextView) convertView
.findViewById(R.id.tvSingleClassSelectHeader);
convertView.setTag(holder);
break;
case 2:
final int newPos = getRealPosition(pos);
convertView = mInflater.inflate(
R.layout.single_class_select_row, parent, false);
holder = new ViewHolder();
holder.checkBox = (CheckBox) convertView
.findViewById(R.id.chkSession);
holder.mainLayout = (LinearLayout) convertView
.findViewById(R.id.llSingleClassLayout);
holder.phase = (TextView) convertView.findViewById(R.id.phase);
holder.class_info = (TextView) convertView
.findViewById(R.id.class_info);
holder.phase.setText(getListObject(pos).phase);
holder.class_info.setText(getListObject(pos).info);
convertView.setTag(holder);
holder.checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// edit out
}
}
});
holder.mainLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// edit out
}
}
});
holder.phase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// edit out
}
}
});
break;
}
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
Can anyone see why? 谁能明白为什么? I have looked at other examples, but because I am overriding
getItemViewType()
because of headers in the middle of the list, no examples match my circumstances since I am doing things differently. 我已经看了其他的例子,但是由于我在列表中间的标题覆盖了
getItemViewType()
所以没有任何例子符合我的情况,因为我的处理方式不同。
It seems that I should put the setOnClickListner
's below the if-block
, but the I have problem with my holder
variable not being initialized while other instances of it need it to be final
. 看来我应该把
setOnClickListner
放在if-block
下面,但是我的holder
变量没有初始化的问题,而其他实例需要它是final
。
You need to set the data(text or what other piece of information you have) outside of the if
block where you test the convertView
for being null
. 您需要将外部设定的数据(文本或什么的,你有其他信息块)
if
块,你测试convertView
为是null
。 Otherwise you'll set the data only when convertView
is null
and as this view will get recycled you'll end up with the same piece of information that was previously set. 否则,只有当
convertView
为null
时才会设置数据,并且当此视图将被回收时,您将最终得到之前设置的相同信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.