我在GridView的適配器內部動態地創建了一個ListView。那麼會發生什麼呢,gridview在其單元格中包含了listviews。在gridview適配器內部,我使用自己的適配器創建了listview。這工作得很好,但是,我需要爲listView編寫一個onitemclick監聽器來訪問它的每個項目的位置。目前,我在創建listview後立即編寫gridview適配器內的onitemclick監聽器,但是我不確定如何獲得對listview項目的訪問權限。android listview dynamic onitemclick
請幫助。
這裏就是我創建列表視圖,GridView的適配器的內部代碼(getview方法 - 我刪除了其他不相關的代碼):
public View getView(int position,View convertView, ViewGroup parent)
{
ListView list;
if (convertView == null)
{
//if it's not recycled, initialize some attributes.
list = new ListView(mContext);
list.setVerticalScrollBarEnabled(false);
list.setLayoutParams(new GridView.LayoutParams(150, 550));
list.setPadding(2,2,2,2);
list.setAdapter(new Adapter_ListView_GridView_Calendar(mContext, dagtyeVanhaarkappers.get(position-hairdresserids.size()), gebookdeurUser.get(position-hairdresserids.size()), tekening.get(position-hairdresserids.size())));
}
else
{
list = (ListView) convertView;
}
list.setCacheColorHint(0);
list.setId(position-hairdresserids.size());
list.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
final int itemp = position;
final int dayId = parent.getChildCount();
list.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
// custom dialog
final Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.dialog_make_booking);
//NOT SURE HOW TO ACCESS LIST ITEM POSITION FROM HERE ???
dialog.show();
}
});
return list;
}
編輯:
這是我現在嘗試但我一直得到值0 ...
list.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
// custom dialog
final Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.dialog_make_booking);
//NOT SURE HOW TO ACCESS LIST ITEM POSITION FROM HERE ???
long l = list.getAdapter().getItemId(arg2); //THIS VALUE STAYS 0
String s = (String) String.valueOf(l);
dialog.setTitle(s);
dialog.show();
}
});
謝謝大家誰幫助。 getitem被設置爲在列表視圖的適配器中返回0嘆氣,但現在它的工作。 thx – Janpan