好的,我只想尝试处理CardView
上的第二次点击。
例如,现在当我(或用户)点击CardView
时,它会生成CardView
,TRANSPARENT
以及Focusable
和其他一些内容比如将Android
文本添加到EditText
。
所以,我需要处理用户或我自己第二次点击CardView
,CardView
更改为Color.WHITE
并设置{{ 1}}到Focusable
或其他东西......
我该怎么做?
这是我到目前为止所做的:
false
我们的想法是将标记( 首次点击 )设置为 final CardView cvAnd = (CardView) findViewById(R.id.and_cv);
cvAnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cvAnd.setTag("FirstClick");
if (cvAnd.getTag().equals("FirstClick") && TextUtils.isEmpty(mTagField.getText().toString())) {
mTagField.setText(R.string.android);
} else {
mTagField.setText(mTagField.getText() + "Android");
}
cvAnd.setCardBackgroundColor(Color.TRANSPARENT);
cvAnd.setFocusable(true);
//First click
cvAnd.setTag("SecondClick");
if (cvAnd.getTag().equals("SecondClick")) {
cvAnd.setCardBackgroundColor(Color.WHITE);
cvAnd.setFocusable(false);
}
//Second click maybe?
}
});
,然后在标记为FirstClick
时进行处理第一次点击东西等等......
但是,问题是,我并不知道如何处理第二次点击。
答案 0 :(得分:2)
这是您提出的概念证明。如果你不明白,请告诉我。
public class CardViewAdapter extends extends RecyclerView.Adapter<CardViewAdapter.MyViewHolder> {
public class MyViewHolder extends RecyclerView.ViewHolder {
public boolean isFirstSelected;
public CardView cardView;
public MyViewHolder(View view) {
super(view);
cardView = (CardView) view.findViewById(R.id.card);
}
public void reset(){
//put here all the properties which need to be resetted
isFirstSelected = false;
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
//set card click listener here and use
//holder.isFirstSelected to handle the internal logic
}
@Override
public void onViewRecycled(MyViewHolder holder) {
//reset the viewholder state
holder.reset();
}
}
我已经拿走了你的片段并试图将逻辑翻译成这个。可能你需要改变逻辑,但现在你有了一个起点。
final CardView cvAnd = (CardView) findViewById(R.id.and_cv);
cvAnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isClicked) {
if (TextUtils.isEmpty(mTagField.getText().toString())) {
mTagField.setText(R.string.android);
cvAnd.setCardBackgroundColor(Color.TRANSPARENT);
cvAnd.setFocusable(true);
}
} else {
if (mTagField.getText().toString().contains("Android")) {
mTagField.getText().clear();
} else {
mTagField.setText(mTagField.getText() + ", Android");
}
cvAnd.setCardBackgroundColor(Color.WHITE);
cvAnd.setFocusable(false);
}
//reverse boolean
isClicked = !isClicked;
}
});