【发布时间】:2014-12-31 15:47:24
【问题描述】:
我正在构建一个类似于 instagram 的应用程序,仅用于培训目的,基本上我有一个通过网格视图适配器填充的图像列表。在“single_list_item”的 XML 文件中,我定义了一个按钮,该按钮将与网格视图列表中每个项目的图像一起添加。
但是,我希望能够单击这些按钮以分别在这些图像上“点赞”(类似于 instagram 的点赞系统)。换句话说:用户可以在第一张图像上点赞,而不是其他图像。我使用不同的图片资源显示了一个赞。
图像由网格视图填充
每张图片下方都有一个赞按钮
我点击属于特定图像的随机点赞按钮
该图片应被选为“喜欢”
到目前为止我尝试了什么:
我的网格适配器:
public class ProductGridInflator extends ArrayAdapter<Product>{
.......
.......
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View child = convertView;
final RecordHolder holder;
LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();
if (child == null) {
child = inflater.inflate(R.layout.grid_single, parent, false);
holder = new RecordHolder();
holder.productName = (TextView) child.findViewById(R.id.grid_text);
holder.image = (ImageView) child.findViewById(R.id.grid_image);
holder.heartButton = (ImageButton) child.findViewById(R.id.btnHeartLike);
holder.heartButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (v.isSelected()){
v.setSelected(false);
} else {
holder.heartButton.setSelected(false);
v.setSelected(true);
}
}
});
child.setTag(holder);
}else{
holder = (RecordHolder) child.getTag();
}
}
}
我正在从选择器中选择合适的图片(喜欢或不喜欢)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/heart_clicked" android:state_selected="true"/>
<item android:drawable="@drawable/heart304"/>
</selector>
但是,当我测试这段代码时,它的行为异常。当我单击特定图像列表项的点赞按钮时,也会单击其他两个或三个列表项的点赞按钮。有没有更好的方法来完成这项工作?每个列表项的单独按钮?
【问题讨论】:
标签: java android button gridview onclicklistener