我创建了一个适配器,并试图使用String ArrayList中的数据填充ListView。我注意到的是,存储在我的ArrayList中的每个第4,第8和第12项不存在于我的ListView中。如果我删除的if/else(查看== NULL)条件下,一切都运行完美,除了我收到皮棉警告>>Unconditional layout inflation from view adapter: Should use View Holder pattern (use recycled view passed into this method as the second parameter) for smoother scrolling
无法从ArrayList正确填充的适配器
这里是我的getView代码,跳过每4个,第8,第12项
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_select, null);
holder = new ViewHolder();
holder.rlLeft = (RelativeLayout) view.findViewById(R.id.rl_left);
holder.rlRight = (RelativeLayout) view.findViewById(R.id.rl_right);
holder.tvTitle = (TextView) view.findViewById(R.id.tv_title);
holder.tvLeftBubble = (TextView) view.findViewById(R.id.tv_left_bubble);
holder.tvRightBubble = (TextView) view.findViewById(R.id.tv_right_bubble);
holder.tvTitle.setText(mArrySelect.get(position).getTitle());
// set visibility gone on views
if (position % 2 == 0) {
holder.rlLeft.setVisibility(View.GONE);
holder.tvRightBubble.setText(mArrySelect.get(position).getMessage());
} else {
holder.rlRight.setVisibility(View.GONE);
holder.tvLeftBubble.setText(mArrySelect.get(position).getMessage());
}
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
return view;
}
这里是作品和显示所有项目在我mArraySelect(字符串ArrayList的),但使我对我的充气棉绒警告
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = convertView;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_select, null);
holder = new ViewHolder();
holder.rlLeft = (RelativeLayout) view.findViewById(R.id.rl_left);
holder.rlRight = (RelativeLayout) view.findViewById(R.id.rl_right);
holder.tvTitle = (TextView) view.findViewById(R.id.tv_title);
holder.tvLeftBubble = (TextView) view.findViewById(R.id.tv_left_bubble);
holder.tvRightBubble = (TextView) view.findViewById(R.id.tv_right_bubble);
holder.tvTitle.setText(mArrySelect.get(position).getTitle());
// set visibility gone on views
if (position % 2 == 0) {
holder.rlLeft.setVisibility(View.GONE);
holder.tvRightBubble.setText(mArrySelect.get(position).getMessage());
} else {
holder.rlRight.setVisibility(View.GONE);
holder.tvLeftBubble.setText(mArrySelect.get(position).getMessage());
}
}
任何人都有一个想法,我在我的第一次执行到我缺少的代码导致跳过视图?我的国防部条件只是为了交替两个不同的意见,并且工作正常。只是我的String ArrayList中的第4,8和12项没有显示。该阵列只有12个项目。
预先感谢您!
嘿!我不太明白,但这确实有效。谢谢! – portfoliobuilder 2015-03-08 22:22:10
一旦你认为我们为什么使用外部if块和视图持有者对象,你会得到答案:) – 2015-03-08 22:25:02