OnClickListener应用于ArrayList中的最后一个元素

时间:2019-08-18 19:21:41

标签: java android android-studio

正在使用的图书馆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);
    }
  }

}) 

是否有一种方法可以使样式效果应用于堆栈中的顶部卡(视图中的卡),而不是应用于Arraylist中的底部卡(最后一个卡)?

我已经尝试过this solution,,但即使我已替换某些方面以匹配我正在使用的库,它似乎也不起作用

1 个答案:

答案 0 :(得分:0)

对于使用此库的任何人,如果您想在视图中进行操作,解决方案是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();
    }

    })