2013-01-23 40 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