总之newView
没有被要求每个列表项,是日志:自定义的ListView NewView的问题
01-06 20:04:15.957: D/NoteListActivity(2771): newView Note ID:12
01-06 20:04:16.087: D/NoteItemView(2771): updateActionText Note ID:12 Action:Stamp
01-06 20:04:16.117: D/NoteListActivity(2771): bindView Note ID:12
01-06 20:04:16.329: D/NoteListActivity(2771): newView Note ID:13
01-06 20:04:16.477: D/NoteItemView(2771): updateActionText Note ID:13 Action:Stamp
01-06 20:04:16.497: D/NoteListActivity(2771): bindView Note ID:13
01-06 20:04:16.729: D/NoteListActivity(2771): newView Note ID:14
01-06 20:04:16.867: D/NoteItemView(2771): updateActionText Note ID:14 Action:Stamp
01-06 20:04:16.887: D/NoteListActivity(2771): bindView Note ID:14
01-06 20:04:17.107: D/NoteListActivity(2771): newView Note ID:15
01-06 20:04:17.247: D/NoteItemView(2771): updateActionText Note ID:15 Action:Stamp
01-06 20:04:17.269: D/NoteListActivity(2771): bindView Note ID:15
01-06 20:04:17.487: D/NoteListActivity(2771): newView Note ID:16
01-06 20:04:17.639: D/NoteItemView(2771): updateActionText Note ID:16 Action:Stamp
01-06 20:04:17.657: D/NoteListActivity(2771): bindView Note ID:16
01-06 20:04:17.897: D/NoteListActivity(2771): newView Note ID:17
01-06 20:04:18.007: D/dalvikvm(2771): GC_EXTERNAL_ALLOC freed 99K, 47% free 2902K/5447K, external 2888K/2971K, paused 53ms
01-06 20:04:18.127: D/NoteItemView(2771): updateActionText Note ID:17 Action:Count
01-06 20:04:18.147: D/NoteListActivity(2771): bindView Note ID:17
01-06 20:04:18.367: D/NoteListActivity(2771): newView Note ID:18
01-06 20:04:18.517: D/NoteItemView(2771): updateActionText Note ID:18 Action:Stamp
01-06 20:04:18.537: D/NoteListActivity(2771): bindView Note ID:18
01-06 20:04:36.488: W/KeyCharacterMap(2771): No keyboard for id 0
01-06 20:04:36.488: W/KeyCharacterMap(2771): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
01-06 20:04:38.118: D/NoteListActivity(2771): newView Note ID:19
01-06 20:04:38.257: D/NoteItemView(2771): updateActionText Note ID:19 Action:Stamp
01-06 20:04:38.277: D/NoteListActivity(2771): bindView Note ID:19
01-06 20:04:38.767: D/NoteListActivity(2771): newView Note ID:20
01-06 20:04:38.849: D/NoteItemView(2771): updateActionText Note ID:20 Action:Stamp
01-06 20:04:38.867: D/NoteListActivity(2771): bindView Note ID:20
01-06 20:04:39.327: D/NoteItemView(2771): updateActionText Note ID:12 Action:Stamp
01-06 20:04:39.347: D/NoteListActivity(2771): bindView Note ID:21
01-06 20:04:39.857: D/dalvikvm(2771): GC_EXTERNAL_ALLOC freed 84K, 47% free 2944K/5511K, external 3593K/3852K, paused 59ms
01-06 20:04:39.997: D/NoteItemView(2771): updateActionText Note ID:13 Action:Stamp
01-06 20:04:40.017: D/NoteListActivity(2771): bindView Note ID:22
01-06 20:04:40.537: D/NoteItemView(2771): updateActionText Note ID:14 Action:Stamp
01-06 20:04:40.557: D/NoteListActivity(2771): bindView Note ID:23
01-06 20:04:41.087: D/NoteItemView(2771): updateActionText Note ID:15 Action:Stamp
01-06 20:04:41.107: D/NoteListActivity(2771): bindView Note ID:24
01-06 20:04:41.617: D/NoteItemView(2771): updateActionText Note ID:16 Action:Stamp
01-06 20:04:41.639: D/NoteListActivity(2771): bindView Note ID:25
01-06 20:06:23.858: D/NoteItemView(2771): updateActionText Note ID:18 Action:Stamp
01-06 20:06:23.878: D/NoteListActivity(2771): bindView Note ID:18
01-06 20:06:24.267: D/dalvikvm(2771): GC_EXTERNAL_ALLOC freed 79K, 47% free 2944K/5511K, external 4681K/4733K, paused 53ms
01-06 20:06:26.519: D/NoteItemView(2771): updateActionText Note ID:15 Action:Stamp
01-06 20:06:26.537: D/NoteListActivity(2771): bindView Note ID:17
01-06 20:06:26.927: D/dalvikvm(2771): GC_EXTERNAL_ALLOC freed 17K, 47% free 2944K/5511K, external 5020K/5295K, paused 60ms
01-06 20:06:26.987: D/NoteItemView(2771): updateActionText Note ID:12 Action:Stamp
01-06 20:06:27.008: D/NoteListActivity(2771): bindView Note ID:16
01-06 20:06:27.247: D/NoteItemView(2771): updateActionText Note ID:13 Action:Stamp
01-06 20:06:27.267: D/NoteListActivity(2771): bindView Note ID:15
01-06 20:06:27.517: D/NoteItemView(2771): updateActionText Note ID:14 Action:Stamp
01-06 20:06:27.537: D/NoteListActivity(2771): bindView Note ID:14
01-06 20:06:28.397: D/NoteItemView(2771): updateActionText Note ID:16 Action:Stamp
01-06 20:06:28.417: D/NoteListActivity(2771): bindView Note ID:13
01-06 20:06:28.809: D/NoteItemView(2771): updateActionText Note ID:19 Action:Stamp
01-06 20:06:28.837: D/NoteListActivity(2771): bindView Note ID:12
01-06 20:06:29.167: D/NoteItemView(2771): updateActionText Note ID:12 Action:Stamp
01-06 20:06:29.189: D/NoteListActivity(2771): bindView Note ID:16
01-06 20:06:29.477: D/NoteItemView(2771): updateActionText Note ID:15 Action:Stamp
01-06 20:06:29.497: D/NoteListActivity(2771): bindView Note ID:17
01-06 20:06:29.688: D/NoteItemView(2771): updateActionText Note ID:18 Action:Stamp
01-06 20:06:29.707: D/NoteListActivity(2771): bindView Note ID:18
01-06 20:06:31.807: D/NoteItemView(2771): updateActionText Note ID:20 Action:Stamp
01-06 20:06:31.827: D/NoteListActivity(2771): bindView Note ID:19
01-06 20:06:32.267: D/NoteItemView(2771): updateActionText Note ID:13 Action:Stamp
01-06 20:06:32.288: D/NoteListActivity(2771): bindView Note ID:20
01-06 20:06:32.537: D/NoteItemView(2771): updateActionText Note ID:14 Action:Stamp
01-06 20:06:32.567: D/NoteListActivity(2771): bindView Note ID:21
01-06 20:06:32.867: D/NoteItemView(2771): updateActionText Note ID:16 Action:Stamp
01-06 20:06:32.887: D/NoteListActivity(2771): bindView Note ID:22
01-06 20:06:33.127: D/NoteItemView(2771): updateActionText Note ID:19 Action:Stamp
01-06 20:06:33.147: D/NoteListActivity(2771): bindView Note ID:23
01-06 20:06:33.677: D/NoteItemView(2771): updateActionText Note ID:15 Action:Stamp
01-06 20:06:33.697: D/NoteListActivity(2771): bindView Note ID:24
01-06 20:06:34.187: D/NoteItemView(2771): updateActionText Note ID:14 Action:Stamp
01-06 20:06:34.207: D/NoteListActivity(2771): bindView Note ID:25
01-06 20:06:34.447: D/NoteItemView(2771): updateActionText Note ID:13 Action:Stamp
01-06 20:06:34.467: D/NoteListActivity(2771): bindView Note ID:21
01-06 20:06:34.647: D/NoteItemView(2771): updateActionText Note ID:20 Action:Stamp
01-06 20:06:34.667: D/NoteListActivity(2771): bindView Note ID:20
01-06 20:06:34.847: D/NoteItemView(2771): updateActionText Note ID:18 Action:Stamp
01-06 20:06:34.867: D/NoteListActivity(2771): bindView Note ID:19
这里是适配器:
class NoteItemAdapter extends CursorAdapter {
private LayoutInflater mInflater;
public NoteItemAdapter(Context context, Cursor c) {
super(context, c);
mInflater = LayoutInflater.from(context);
}
public NoteItemAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
mInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final NoteListItemHolder noteItemHolder = (NoteListItemHolder)view.getTag();
NoteCursor nc = (NoteCursor)cursor;
initView(noteItemHolder, nc);
Log.d(TAG, String.format("bindView Note ID:%s", nc.getColId()));
}
private void initView(final NoteListItemHolder noteItemHolder, NoteCursor nc)
throws NotFoundException {
noteItemHolder.getBase().setClickable(false);
noteItemHolder.getBase().setLongClickable(true);
noteItemHolder.getTopText().setText(nc.getColTitle());
noteItemHolder.getBottomText().setText(nc.getColNote());
byte[] icon = nc.getColActionIcon();
if (icon != null) {
noteItemHolder.getIconButton().setImageBitmap(BitmapUtil.BitmapFromByteArray(icon));
} else {
NoteAction actionType = NoteListItemHolder.NoteActionFromInt(nc.getColActionType());
int actionIconResId = R.drawable.note_action_icon_none;
switch (actionType) {
case Span:
actionIconResId = R.drawable.note_action_icon_span;
break;
case Stamp:
actionIconResId = R.drawable.note_action_icon_stamp;
break;
case Count:
actionIconResId = R.drawable.note_action_icon_count;
break;
default:
//NOOP
break;
}
noteItemHolder.getIconButton().setImageBitmap(((BitmapDrawable)getResources().getDrawable(actionIconResId)).getBitmap());
}
noteItemHolder.getIconButton().setClickable(true);
noteItemHolder.getIconButton().setLongClickable(false);
noteItemHolder.updateActionText();
noteItemHolder.getIconButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View iconView) {
noteItemHolder.doAction();
}
});
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
View row = mInflater.inflate(R.layout.note_list_item, viewGroup, false);
NoteCursor nc = (NoteCursor)getCursor();
NoteListItemHolder wrapper = new NoteListItemHolder(row, nc.getColId());
row.setTag(wrapper);
Log.d(TAG, String.format("newView Note ID:%s", nc.getColId()));
return row;
}
}
我一直在读一本一堆关于类似的问题,我只是无法弄清楚!
项目的第一页(当列表视图被加载时可见)总是正确的,但是当您至少滚动列表项中的一个文本视图时总是正确的,并且至少有一个在新的项目(两个文本视图正在从始终调用的bindView获取文本更新)。这让我相信这个问题不在适配器中,但是如日志所示,newView不会被调用到项目21及更高版本。
而且......对于额外的好处,当您向后滚动时,那些正确的不再是;他们现在的行为与列表中的其他部分相似。
那么,有什么想法的家伙?
我很想忽略你的意见,但既然你有如此高的声誉...我通常不会提出简单或直接的问题,因此,并不总是对他们的答案(或合适的人根本没有出现)。因此,我不会将部分或“非常接近”的回答标记为答案,因为这只会传播当前在整个互联网中发生狂妄的混淆。当我的问题得到充分回答时,他们会得到适当的注意(可以自行检查)。 – LostNomad311 2012-02-02 04:39:45
* *咳嗽* *接受这一个* *咳嗽* * :-P – dmon 2012-02-02 14:15:37