Android 自定义ListView重复自身
下面是我的Android 自定义ListView重复自身,android,android-listview,adapter,Android,Android Listview,Adapter,下面是我的getView()方法: public View getView(final int pos, View convertView, ViewGroup parent) { final ViewHolder holder; int rowType = getItemViewType(pos); if (convertView == null) { switch (rowType) {
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;
}
有人知道为什么吗?我已经看过了其他的例子,但是因为我在重写<代码> GeTimeVIEW()/代码>,因为列表中间的头,没有例子与我的情况相匹配,因为我做事的方式不同。
似乎我应该把
setOnClickListner
放在if块的下面,但是我的holder
变量没有初始化,而它的其他实例需要它是final
您需要设置数据(文本或您拥有的其他信息)在测试convertView
是否为null
的if
块之外。否则,只有当convertView
为null
时,您才会设置数据,并且由于此视图将被回收,您将得到与以前设置的相同的信息。您需要在测试convertView
的if
块之外设置任何数据,否则您将设置数据只有当该视图为空时(并在视图回收时继续仅获取该数据)。@Luksprog就是这样。我只是需要改变一些事情,让它发挥作用,让所有的持有者
变量都感到高兴。我现在明白了。您想回收UI视图,而不是数据!(如果愿意,您可以标记为答案)