2013-01-23 42 views
1

我在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(); 
      } 
     }); 
+0

謝謝大家誰幫助。 getitem被設置爲在列表視圖的適配器中返回0嘆氣,但現在它的工作。 thx – Janpan

回答

1

使當前類的listview成員和arg2是被單擊的listitem的位置。

+0

我試圖訪問arg2但值保持0?看編輯上面 – Janpan

1

是否在onItemClick方法中未識別出itemp?

你有沒有試過讓位置變量final並訪問它?

順便說一句,INT ARG2應該在自身位置

+0

我試圖訪問arg2但值保持0?見上面的編輯 – Janpan