コードでわかるように、ArrayAdapter
メソッドを使用して、呼び出されたカスタム ビューを使用して を設定します。GridView
GridView
getView
GridViewCell
このカスタム ビューをFlipAnimation
クリックすると、クリックしたビューでうまく機能するメソッドが実行されます。私が達成したいのは、現在アダプターにある他のすべてのカスタム ビューに対して同じアニメーション メソッドを実行することです。そのため、他のすべてのビューのインスタンスを取得する必要があります (アダプターには 4 つのビューがあるため、インスタンスを取得する必要があります)。他の 3)。
public class AnswersGridAdapter extends ArrayAdapter<Answer>
{
private static final String TAG = AnswersGridAdapter.class.getSimpleName();
private ArrayList<Answer> answersList;
private Context context;
private MainActivity activity;
private QuestionGridFragment fragment;
private View view;
public AnswersGridAdapter(QuestionGridFragment fragment, Context context, int textViewResourceId, ArrayList<Answer> answersList)
{
super(context, textViewResourceId, answersList);
this.answersList = new ArrayList<Answer>();
this.answersList.addAll(answersList);
this.context = context;
this.activity = (MainActivity)context;
this.fragment = fragment;
}
public View getView(final int position, View convertView, ViewGroup parent)
{
final View view = new GridViewCell(context);
if (answersList.get(position).isChecked())
{
((GridViewCell)view).FlipToBackWithoutAnimation();
}
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
((GridViewCell)view).FlipAnmiation();
if (answersList.get(position).isChecked())
{
answersList.get(position).setChecked(false);
}
else
{
answersList.get(position).setChecked(true);
}
activity.getEstimatedCostTextView().setText(String.valueOf(activity.getEstimatedCost()));
fragment.flipOtherChosenAnswer(position);
}
});
((GridViewCell)view).setTextToTitleTextView(answersList.get(position).getAnswerText());
return view;
}
}
私はこのようなことをしようとしていました:
public void flipOtherChosenAnswer(int position)
{
int cellCount = answersAdapter.getCount();
for (int i=0; i < cellCount; i++ )
{
((GridViewCell)answersAdapter.getView(i, null, null)).FlipAnmiation();
}
}
しかし、それは私を助けませんでした。これはどのように行うことができますか?