GridView の位置で項目ビューを取得したいのですが、その方法がわかりません。
gridView.getChildCount()を繰り返し処理しようとしましたが、0 が返されます ( https://stackoverflow.com/a/8944678/1788704 )。
gridView.getCount()を呼び出すと、25 (グリッドビューのアイテムの正確な数) が返されます。
getCount を使用してループ内でgetChildAt(position)を呼び出そうとすると、NPE が発生します。
私が正確にやりたいことは、アイテム ビュー内に 2 つの ImageView を取得し、それぞれにsetOnClickListener()を設定するアイテム ビューを取得することです。
現時点では、これらのリスナーを gridView のsetOnItemClickListener()に設定しています。
しかし、imageViews を初めてクリックしたときにリスナーが設定されていない場合は、問題ありません (セルをクリックすると初期化されるため)。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
[... ... ...]
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView shutterDown = (ImageView) v.findViewById(R.id.grid_item_shutter_down);
shutterDown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Down", Toast.LENGTH_SHORT).show();
}
});
ImageView shutterUp = (ImageView) v.findViewById(R.id.grid_item_shutter_up);
shutterUp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Up", Toast.LENGTH_SHORT).show();
}
});
// The rest of the onItemClickListener (normal behavior).
}
});
return rootView;
}
これが私のグリッドセルのスクリーンショットです: