正在使用的库 SwipCards
我有一个 ArrayList,它循环遍历许多卡片,就像一副卡片一样移动(类似于 Tinder 的 UI),我决定添加一个 onclicklistener,以便应用到卡片的样式将在单击时更改,它可以工作,但它只适用于 ArrayList 中的最后一张卡片。
flingContainer.setOnItemClickListener(new
SwipeFlingAdapterView.OnItemClickListener(){
@override
public void onItemClicked(int itemPosition, Object dataObject) {
if (findViewById(R.id.namecard).getVisibility() == (View.VISIBLE)){
findViewById(R.id.namecard).setVisibility(View.INVISIBLE);
}
else if (findViewById(R.id.namecard).getVisibility() == (View.GONE)){
findViewById(R.id.namecard).setVisibility(View.VISIBLE);
}
else if (findViewById(R.id.namecard).getVisibility() == (View.VISIBLE)){
findViewById(R.id.namecard).setVisibility(View.VISIBLE);
}
}
})
有没有办法让样式效果应用于堆栈中的顶部卡( View 中的卡)而不是 Arraylist 中的底部卡(最后一张卡)?
我已经尝试过this solution,但即使我替换了某些方面以匹配我正在使用的库,它似乎也不起作用
最佳答案
对于使用此库的任何人并且您想要操作 View 中的卡片,解决方案是 getSelectedView()
flingContainer.setOnItemClickListener(new SwipeFlingAdapterView.OnItemClickListener(){
@override
public void onItemClicked(int itemPosition, Object dataObject) {
View view = flingContainer.getSelcetedView();
if (view.findViewById(R.id.namecard).getVisibility() == (View.VISIBLE)){
view.findViewById(R.id.namecard).setVisibility(View.INVISIBLE);
}
else if (view.findViewById(R.id.namecard).getVisibility() == (View.GONE)){
view.findViewById(R.id.namecard).setVisibility(View.VISIBLE);
}
else if (view.findViewById(R.id.namecard).getVisibility() == (View.VISIBLE)){
view.findViewById(R.id.namecard).setVisibility(View.VISIBLE);
}
arrayAdapter.notifyDataSetChanged();
}
})
关于java - OnClickListener 适用于 ArrayList 中的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57547663/