您的位置:首页 > 移动开发 > Android开发

Android ListView 滑动的时候数据消失变化

2015-04-24 23:07 447 查看
最近做一个群聊app

1.只有一个布局文件inflate为对应getView中的convertView

2.不同item样式通过数据中对象来区分控制Visiable or Gone

问题是

1.数据变化后调用notifyDataSetChanged,有些数据还是未显示

2.滑动ListView后有时候数据消失了,再滑动可能又出现了

其中聊天页面用的listview,可是当listview上下滑动的时候,有的item内容不显示,有的开始显示滑动回来就没了

使用viewholder重用了之前的view而不是新创建所以需要对view中的不同控件setVisiablity

所以代码中需要对每个控件进行可见性控制

比如这样

<span style="font-size:12px;"><span style="font-size:12px;">
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Chat chat = getItem(position);
View view;
ViewHolder viewHolder;
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
viewHolder = new ViewHolder();
viewHolder.left_name = (TextView) view.findViewById(R.id.left_user);
viewHolder.left_content = (TextView) view.findViewById(R.id.left_msg);
viewHolder.left_layout = (RelativeLayout) view.findViewById(R.id.left_layout);
viewHolder.right_content = (TextView) view.findViewById(R.id.right_msg);
viewHolder.right_layout = (LinearLayout) view.findViewById(R.id.right_layout);
view.setTag(viewHolder);
}
else{
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
if((getCount()!=0)&&(chat.getName().equals(CustomApplication.getName()))){
viewHolder.left_layout.setVisibility(View.GONE);
viewHolder.right_layout.setVisibility(View.VISIBLE);
viewHolder.right_content.setText(chat.getContent());
}else if(getCount()!=0){
viewHolder.left_layout.setVisibility(View.VISIBLE);
viewHolder.right_layout.setVisibility(View.GONE);
viewHolder.left_name.setText(chat.getName());
viewHolder.left_content.setText(chat.getContent());
}
return view;
}</span></span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐