【发布时间】:2016-03-13 14:01:09
【问题描述】:
我有一个列表视图,其中包含图像列表行和两个按钮。该列表从 JSON 加载。我正在尝试隐藏我单击的一行中的按钮。
我通过在BaseAdapter的getView中调用onclicklistener按钮尝试了
问题
当我连续点击一个按钮时。其他一些行的按钮被隐藏。我没有看到当前行按钮隐藏。
Toast 消息显示了我单击的按钮的正确文本,如下面的代码所示
BaseAdapter/getView
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
newsItem = listData.get(position);
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.home_single_image, null);
}
holder.caption1View = (Button) convertView.findViewById(R.id.btnpos);
holder.caption1View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
HomeListItem newsItem1 = listData.get(position);
Toast.makeText(c,newsItem1.getCaption1(),Toast.LENGTH_LONG).show();// shows the correct position button text
holder.caption1View.setVisibility(View.GONE);
}
});
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
}
return convertView;
}
【问题讨论】:
-
您没有在第一次使用时初始化
holder。 -
我不明白?它被初始化了
-
我认为您不太了解 ViewHolder 是什么或如何使用它。如果您使用 ViewHolder,它应该是一个单独的类,保存您正在实例化的每个列表项的视图。您将在该类中定义
onClick(),以便从该类创建的每个对象都有自己的onClick回调。
标签: android listview android-listview