我想獲得在GridView中的位置的項目視圖,我不知道該怎麼做。如何通過GridView中的位置獲取項目視圖(在onCreateView中)?
我試過遍歷gridView.getChildCount(),但它返回0(https://stackoverflow.com/a/8944678/1788704)。
當我打電話給gridView.getCount(),它返回25(GridView的項目的確切數量)。
當我嘗試在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;
}
這裏是我的網格單元的截圖:
我通常在自定義適配器中做這種事情。只需擴展BaseAdapter'getView()'並將你的'onClicks()'放在那裏 –
我有我自己的適配器...我很笨。我之前不想使用它,因爲我必須在我的onClicks中創建一個線程(套接字內部),但是使用AsyncTask它應該沒問題。謝謝。 – kmas