@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder mViewHolder;
if (convertView == null) {
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item_community_hot_head, parent, false);
mViewHolder.sdv_avatar = (SimpleDraweeView) convertView.findViewById(R.id.sdv_avatar);
mViewHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);
mViewHolder.tv_msg = (TextView) convertView.findViewById(R.id.tv_msg);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder) convertView.getTag();
}
mViewHolder.tv_title.setText((String) list.get(position).get("title"));
mViewHolder.tv_msg.setText((String) list.get(position).get("message"));
FrescoUtils.setNormalInternetImage(mViewHolder.sdv_avatar, World.ImagePath200 + list.get(position).get("image"));
//这里改变了convertView的样式,会导致点击事件错乱
convertView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int)(World.width / 4.4)));
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOnClick(list.get(position));
}
});
return convertView;
}
代码片段如上,由于在getView中改变了convertView的样式,导致了点击事件的混乱,所以要么去掉这些代码要么在初始化的时候设置
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder mViewHolder;
if (convertView == null) {
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item_community_hot_head, parent, false);
//现在在这里改变了convertView的样式,修复了问题
convertView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int)(World.width / 4.4)));
mViewHolder.sdv_avatar = (SimpleDraweeView) convertView.findViewById(R.id.sdv_avatar);
mViewHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);
mViewHolder.tv_msg = (TextView) convertView.findViewById(R.id.tv_msg);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder) convertView.getTag();
}
mViewHolder.tv_title.setText((String) list.get(position).get("title"));
mViewHolder.tv_msg.setText((String) list.get(position).get("message"));
FrescoUtils.setNormalInternetImage(mViewHolder.sdv_avatar, World.ImagePath200 + list.get(position).get("image"));
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOnClick(list.get(position));
}
});
return convertView;
}