listview 点赞 问题 listview图片点赞 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 getview使用了Viewholder?是的话检查下判断语句是否有遗漏,导致沿用了前面的view adapter的问题,写一个map记录当前item的点赞状态,如果是赞的为true,没赞的false,下次getview的时候判断这个map,因为每一个item都会重新getview 使用了之前点赞了的view,是否点赞都要在代码设置背景if(....){ iv.set....}else{ iv.set...} getview里面设置点赞背景的时候,代码都要设置背景if(...){ iv.set...}else{ iv.set...} private HashMap<Integer, Boolean> isCanClick;private int current_position = -1;getview里if (isCanClick.get(position) == false) { 空白的红心 } else { 点过赞的红心 }点击事件holder.praise_rl.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isCanClick.put(current_position, true); } }); adapter的getview里有if就要有else 因为 convertview沿用了之前的view ,所以如果想要显示当前view状态的话 要把之前的状态覆盖掉 让我来告诉你,记得设置tag,ok?把你的代码贴出来我看看 赞同,以前遇到错乱问题也是因为有个view没有做任何操作 @Override public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position); final ViewHolder viewHolder; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.fragment3_items, parent, false); viewHolder = new ViewHolder(); viewHolder.content = (TextView) convertView .findViewById(R.id.content); viewHolder.like_count = (TextView) convertView .findViewById(R.id.isLikeNum); viewHolder.comment_count = (TextView) convertView .findViewById(R.id.messageNum); viewHolder.name = (TextView) convertView.findViewById(R.id.name); viewHolder.like = (ImageView) convertView.findViewById(R.id.like); viewHolder.message = (ImageView) convertView .findViewById(R.id.message); viewHolder.pid = (TextView) convertView.findViewById(R.id.pid); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 设置item的背景色 #00ff00 String color = "#" + item.bg_color; convertView.setBackgroundColor(Color.parseColor(color)); viewHolder.content.setText(item.post_content); viewHolder.like_count.setText(StringUtils .getDisplayNum(item.like_count)); viewHolder.comment_count.setText(StringUtils .getDisplayNum(item.comment_count)); viewHolder.name.setText(StringUtils.convertFroType(item.from_type)); viewHolder.pid.setText(item.pid + ""); viewHolder.like.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int num = 0; if (!"".equals(viewHolder.like_count.getText())) num = new Integer(viewHolder.like_count.getText() .toString()); num++; ((ImageView) v).setImageResource(R.drawable.like); viewHolder.like_count.setText(num + ""); Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT) .show(); } }); return convertView; }这是我的代码 大家帮忙看下 代码还给你...@Overridepublic View getView(int position, View convertView, ViewGroup parent) {final OutPara1301Item item = (OutPara1301Item) getItem(position);final ViewHolder viewHolder;if (convertView == null) {LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);convertView = inflater.inflate(R.layout.fragment3_items, parent,false);viewHolder = new ViewHolder();viewHolder.content = (TextView) convertView.findViewById(R.id.content);viewHolder.like_count = (TextView) convertView.findViewById(R.id.isLikeNum);viewHolder.comment_count = (TextView) convertView.findViewById(R.id.messageNum);viewHolder.name = (TextView) convertView.findViewById(R.id.name);viewHolder.like = (ImageView) convertView.findViewById(R.id.like);viewHolder.message = (ImageView) convertView.findViewById(R.id.message);viewHolder.pid = (TextView) convertView.findViewById(R.id.pid);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}// 设置item的背景色 #00ff00String color = "#" + item.bg_color;convertView.setBackgroundColor(Color.parseColor(color));viewHolder.content.setText(item.post_content);viewHolder.like_count.setText(StringUtils.getDisplayNum(item.like_count));viewHolder.comment_count.setText(StringUtils.getDisplayNum(item.comment_count));viewHolder.name.setText(StringUtils.convertFroType(item.from_type));viewHolder.pid.setText(item.pid + "");if ("".equals(viewHolder.like_count.getText())){ viewHolder.like.setImageResource(R.drawable.like_default);}else{viewHolder.like.setImageResource(R.drawable.like);}viewHolder.like.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {int num = 0;if (!"".equals(viewHolder.like_count.getText()))num = new Integer(viewHolder.like_count.getText().toString());num++;((ImageView) v).setImageResource(R.drawable.like);viewHolder.like_count.setText(num + "");Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT).show();}});return convertView;} (⊙o⊙)… 什么问题 帮忙看看啊代码帮你改了啊,就看我这楼的代码(⊙o⊙)… 什么问题 帮忙看看啊代码帮你改了啊,就看我这楼的代码这个..之判断text为k空 不行吧 @Override public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position); final ViewHolder viewHolder; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.fragment3_items, parent, false); viewHolder = new ViewHolder(); viewHolder.content = (TextView) convertView .findViewById(R.id.content); viewHolder.like_count = (TextView) convertView .findViewById(R.id.isLikeNum); viewHolder.comment_count = (TextView) convertView .findViewById(R.id.messageNum); viewHolder.name = (TextView) convertView.findViewById(R.id.name); viewHolder.like = (ImageView) convertView.findViewById(R.id.like); viewHolder.message = (ImageView) convertView .findViewById(R.id.message); viewHolder.pid = (TextView) convertView.findViewById(R.id.pid); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 设置item的背景色 #00ff00 String color = "#" + item.bg_color; convertView.setBackgroundColor(Color.parseColor(color)); viewHolder.content.setText(item.post_content); viewHolder.like_count.setText(StringUtils .getDisplayNum(item.like_count)); viewHolder.comment_count.setText(StringUtils .getDisplayNum(item.comment_count)); viewHolder.name.setText(StringUtils.convertFroType(item.from_type)); viewHolder.pid.setText(item.pid + ""); viewHolder.like.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int num = 0; if (!"".equals(viewHolder.like_count.getText())) num = new Integer(viewHolder.like_count.getText() .toString()); num++; ((ImageView) v).setImageResource(R.drawable.like); viewHolder.like_count.setText(num + ""); Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT) .show(); } }); return convertView; }这是我的代码 大家帮忙看下listView 的item是循环使用的,你在点击的时候设置了image,但是这个view在你滑动list的时候,还会被用到,所以就出现了你看到的,隔几个item就会有一个红心。这种情况,我的做法是1. 点击的时候不是直接set view,而是标记adapter的数据,哪一个被点过了2. notifyDataChange,在getView里设置 1 里被标记的数据红心 @Override public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position); final ViewHolder viewHolder; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.fragment3_items, parent, false); viewHolder = new ViewHolder(); viewHolder.content = (TextView) convertView .findViewById(R.id.content); viewHolder.like_count = (TextView) convertView .findViewById(R.id.isLikeNum); viewHolder.comment_count = (TextView) convertView .findViewById(R.id.messageNum); viewHolder.name = (TextView) convertView.findViewById(R.id.name); viewHolder.like = (ImageView) convertView.findViewById(R.id.like); viewHolder.message = (ImageView) convertView .findViewById(R.id.message); viewHolder.pid = (TextView) convertView.findViewById(R.id.pid); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 设置item的背景色 #00ff00 String color = "#" + item.bg_color; convertView.setBackgroundColor(Color.parseColor(color)); viewHolder.content.setText(item.post_content); viewHolder.like_count.setText(StringUtils .getDisplayNum(item.like_count)); viewHolder.comment_count.setText(StringUtils .getDisplayNum(item.comment_count)); viewHolder.name.setText(StringUtils.convertFroType(item.from_type)); viewHolder.pid.setText(item.pid + ""); viewHolder.like.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int num = 0; if (!"".equals(viewHolder.like_count.getText())) num = new Integer(viewHolder.like_count.getText() .toString()); num++; ((ImageView) v).setImageResource(R.drawable.like); viewHolder.like_count.setText(num + ""); Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT) .show(); } }); return convertView; }这是我的代码 大家帮忙看下listView 的item是循环使用的,你在点击的时候设置了image,但是这个view在你滑动list的时候,还会被用到,所以就出现了你看到的,隔几个item就会有一个红心。这种情况,我的做法是1. 点击的时候不是直接set view,而是标记adapter的数据,哪一个被点过了2. notifyDataChange,在getView里设置 1 里被标记的数据红心隐约优点明白了 谢谢了 在不同像素的模拟器上载入的图片长宽不同,为什么? android调试报错,求助!!! 请问关于获取字符串 播放rtsp视频一会儿后,不能播放了 app list 可不可以动态加载和更新? 动态添加删除控件,遇到大问题,请前辈们帮忙. 求解:关于findViewById获取Button对象有空指针问题 请教一个android调用JS的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 手机应用闪退,请各位大虾帮忙看下 如何限定一台安卓平板电脑浏览器(APP)只能访问指定的网址? 求教ndk编译问题,关于gles2的 请问关于android 的http问题
iv.set....
}else{
iv.set...
}
if(...){
iv.set...
}else{
iv.set...
}
private int current_position = -1;getview里
if (isCanClick.get(position) == false) {
空白的红心
} else {
点过赞的红心
}
点击事件
holder.praise_rl.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
isCanClick.put(current_position, true);
}
});
有if
就要有else
public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position);
final ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.fragment3_items, parent,
false);
viewHolder = new ViewHolder();
viewHolder.content = (TextView) convertView
.findViewById(R.id.content);
viewHolder.like_count = (TextView) convertView
.findViewById(R.id.isLikeNum);
viewHolder.comment_count = (TextView) convertView
.findViewById(R.id.messageNum);
viewHolder.name = (TextView) convertView.findViewById(R.id.name);
viewHolder.like = (ImageView) convertView.findViewById(R.id.like);
viewHolder.message = (ImageView) convertView
.findViewById(R.id.message);
viewHolder.pid = (TextView) convertView.findViewById(R.id.pid);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 设置item的背景色 #00ff00
String color = "#" + item.bg_color;
convertView.setBackgroundColor(Color.parseColor(color));
viewHolder.content.setText(item.post_content);
viewHolder.like_count.setText(StringUtils
.getDisplayNum(item.like_count));
viewHolder.comment_count.setText(StringUtils
.getDisplayNum(item.comment_count));
viewHolder.name.setText(StringUtils.convertFroType(item.from_type));
viewHolder.pid.setText(item.pid + "");
viewHolder.like.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { int num = 0;
if (!"".equals(viewHolder.like_count.getText()))
num = new Integer(viewHolder.like_count.getText()
.toString());
num++;
((ImageView) v).setImageResource(R.drawable.like);
viewHolder.like_count.setText(num + "");
Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT)
.show();
}
});
return convertView;
}
这是我的代码 大家帮忙看下
public View getView(int position, View convertView, ViewGroup parent) {final OutPara1301Item item = (OutPara1301Item) getItem(position);
final ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.fragment3_items, parent,
false);
viewHolder = new ViewHolder();
viewHolder.content = (TextView) convertView
.findViewById(R.id.content);
viewHolder.like_count = (TextView) convertView
.findViewById(R.id.isLikeNum);
viewHolder.comment_count = (TextView) convertView
.findViewById(R.id.messageNum);
viewHolder.name = (TextView) convertView.findViewById(R.id.name);
viewHolder.like = (ImageView) convertView.findViewById(R.id.like);
viewHolder.message = (ImageView) convertView
.findViewById(R.id.message);
viewHolder.pid = (TextView) convertView.findViewById(R.id.pid);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 设置item的背景色 #00ff00
String color = "#" + item.bg_color;
convertView.setBackgroundColor(Color.parseColor(color));
viewHolder.content.setText(item.post_content);
viewHolder.like_count.setText(StringUtils
.getDisplayNum(item.like_count));
viewHolder.comment_count.setText(StringUtils
.getDisplayNum(item.comment_count));
viewHolder.name.setText(StringUtils.convertFroType(item.from_type));
viewHolder.pid.setText(item.pid + "");
if ("".equals(viewHolder.like_count.getText())){
viewHolder.like.setImageResource(R.drawable.like_default);
}else{
viewHolder.like.setImageResource(R.drawable.like);
}
viewHolder.like.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {int num = 0;
if (!"".equals(viewHolder.like_count.getText()))
num = new Integer(viewHolder.like_count.getText()
.toString());
num++;
((ImageView) v).setImageResource(R.drawable.like);
viewHolder.like_count.setText(num + "");
Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT)
.show();
}
});
return convertView;
}
代码帮你改了啊,就看我这楼的代码(⊙o⊙)… 什么问题 帮忙看看啊
代码帮你改了啊,就看我这楼的代码这个..之判断text为k空 不行吧
public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position);
final ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.fragment3_items, parent,
false);
viewHolder = new ViewHolder();
viewHolder.content = (TextView) convertView
.findViewById(R.id.content);
viewHolder.like_count = (TextView) convertView
.findViewById(R.id.isLikeNum);
viewHolder.comment_count = (TextView) convertView
.findViewById(R.id.messageNum);
viewHolder.name = (TextView) convertView.findViewById(R.id.name);
viewHolder.like = (ImageView) convertView.findViewById(R.id.like);
viewHolder.message = (ImageView) convertView
.findViewById(R.id.message);
viewHolder.pid = (TextView) convertView.findViewById(R.id.pid);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 设置item的背景色 #00ff00
String color = "#" + item.bg_color;
convertView.setBackgroundColor(Color.parseColor(color));
viewHolder.content.setText(item.post_content);
viewHolder.like_count.setText(StringUtils
.getDisplayNum(item.like_count));
viewHolder.comment_count.setText(StringUtils
.getDisplayNum(item.comment_count));
viewHolder.name.setText(StringUtils.convertFroType(item.from_type));
viewHolder.pid.setText(item.pid + "");
viewHolder.like.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { int num = 0;
if (!"".equals(viewHolder.like_count.getText()))
num = new Integer(viewHolder.like_count.getText()
.toString());
num++;
((ImageView) v).setImageResource(R.drawable.like);
viewHolder.like_count.setText(num + "");
Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT)
.show();
}
});
return convertView;
}
这是我的代码 大家帮忙看下listView 的item是循环使用的,你在点击的时候设置了image,但是这个view在你滑动list的时候,还会被用到,所以就出现了你看到的,隔几个item就会有一个红心。
这种情况,我的做法是
1. 点击的时候不是直接set view,而是标记adapter的数据,哪一个被点过了
2. notifyDataChange,在getView里设置 1 里被标记的数据红心
public View getView(int position, View convertView, ViewGroup parent) { final OutPara1301Item item = (OutPara1301Item) getItem(position);
final ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.fragment3_items, parent,
false);
viewHolder = new ViewHolder();
viewHolder.content = (TextView) convertView
.findViewById(R.id.content);
viewHolder.like_count = (TextView) convertView
.findViewById(R.id.isLikeNum);
viewHolder.comment_count = (TextView) convertView
.findViewById(R.id.messageNum);
viewHolder.name = (TextView) convertView.findViewById(R.id.name);
viewHolder.like = (ImageView) convertView.findViewById(R.id.like);
viewHolder.message = (ImageView) convertView
.findViewById(R.id.message);
viewHolder.pid = (TextView) convertView.findViewById(R.id.pid);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 设置item的背景色 #00ff00
String color = "#" + item.bg_color;
convertView.setBackgroundColor(Color.parseColor(color));
viewHolder.content.setText(item.post_content);
viewHolder.like_count.setText(StringUtils
.getDisplayNum(item.like_count));
viewHolder.comment_count.setText(StringUtils
.getDisplayNum(item.comment_count));
viewHolder.name.setText(StringUtils.convertFroType(item.from_type));
viewHolder.pid.setText(item.pid + "");
viewHolder.like.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { int num = 0;
if (!"".equals(viewHolder.like_count.getText()))
num = new Integer(viewHolder.like_count.getText()
.toString());
num++;
((ImageView) v).setImageResource(R.drawable.like);
viewHolder.like_count.setText(num + "");
Toast.makeText(context, "是否点赞" + num, Toast.LENGTH_SHORT)
.show();
}
});
return convertView;
}
这是我的代码 大家帮忙看下listView 的item是循环使用的,你在点击的时候设置了image,但是这个view在你滑动list的时候,还会被用到,所以就出现了你看到的,隔几个item就会有一个红心。
这种情况,我的做法是
1. 点击的时候不是直接set view,而是标记adapter的数据,哪一个被点过了
2. notifyDataChange,在getView里设置 1 里被标记的数据红心隐约优点明白了 谢谢了