我有一个列表视图,其中包含每行末尾的图像视图。我想要做的是当我点击它时,必须使其他布局可见。通过布局我的意思是我有一个相对布局组成的图像视图&列表视图的每一行的文本视图,其可见性最初设置为GONE。
我已尝试在我的适配器类中使用以下代码,但是在我单击图像视图2次&相对布局未在正确的位置打开。此外,当相对布局变得可见时,我将在其单击侦听器上的下一个活动上进行迁移。
holder.rowImageView.setTag(position);
holder.rowImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = (Integer) view.getTag();
holder.rowRelativeLayout.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
holder.rowRelativeLayout.setTag(position);
holder.rowRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(), OrderActivity.class);
intent .putExtra("ProductId", gettersSetters.getVoucherId());
intent .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent );
}
});
有人请建议我做错了什么。提前谢谢。
答案 0 :(得分:2)
也许你的标签位置不正确。您可以查看以下代码:
public View getView (int position, View convertView, ViewGroup parent){
if( convertView == null ){
...
holder.imageView.setTag(position);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.rowImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = (int) view.getTag();
View rowEffect = getViewByPosition(position, (ListView)parent);
rowEffect.findViewById(R.id.rowRelativeLayout).setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
});
holder.rowRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
...
}
});
}
private View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}