我正在构建一个类似于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>
然而,当我测试它时,这段代码行为不端。当我点击特定图像列表项的类似按钮时,也会点击两个或三个其他列表项,如按钮。有没有更好的方法来完成这项工作?每个列表项的单个按钮?
答案 0 :(得分:0)
问题是您正在重复使用onclicklisteners ..从getView
holder.heartButton.setOnClickListener(new OnClickListener() {
而是写下你的活动
YouGridView.setOnItemClickListener
添加单击项目时要执行的操作。