2012-09-04 37 views
0

我創建了一個ExpandableList View以及一些組項目和相應的子項目。如何在ExpandableListView的子視圖上處理兩個ImageButtons

我可以到達子視圖,並在groupPositionchildPosition的幫助下訪問子視圖屬性。

現在,我必須在這個每個子視圖上放置兩個ImageButton,並在點擊每個子視圖時觸發不同的Intents。

我試圖代碼來設置onClickListeners每個圖像按鈕,並得到相應的結果,但我遇到困難的返回值,其中只有一個ViewgetChildView回報。
如何獲得每個ImageButton的點擊響應?

我的代碼如下:

public View getChildView (final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 
{ 
    final View providbtn = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); 
    final View lecvidbtn = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); 
    final ImageButton providbtn1 = (ImageButton)providbtn.findViewById(R.id.provid); 
    final ImageButton lecvidbtn1 = (ImageButton)lecvidbtn.findViewById(R.id.lecvid); 
    //final View childItemClicked = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); 
    //final ImageButton ib = (ImageButton)childItemClicked.findViewById(R.id.) 
    //ImageButton provid = (ImageButton)findViewById(R.id.provid); 
    providbtn1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getApplication(), "Topic Proc video is: "+topic[groupPosition]+" and Chapter is "+chapter[groupPosition][childPosition], Toast.LENGTH_LONG).show(); 
       flag = "p"; 
       Bundle bundle = new Bundle(); 
       bundle.putString("topic",topic[groupPosition]); 
       bundle.putString("chapter",chapter[groupPosition][childPosition]); 
       Intent goHome = new Intent(getApplicationContext(), VideoWeb.class); 
       goHome.putExtras(bundle); 
       startActivity(goHome); 
       } 
      }); 

      lecvidbtn1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplication(), "Topic Lec video is: "+topic[groupPosition]+" and Chapter is "+chapter[groupPosition][childPosition], Toast.LENGTH_LONG).show(); 
      flag = "l"; 
      Bundle bundle = new Bundle(); 
       bundle.putString("topic",topic[groupPosition]); 
       bundle.putString("chapter",chapter[groupPosition][childPosition]); 
       Intent goHome = new Intent(getApplicationContext(), VideoWeb.class); 
       goHome.putExtras(bundle); 
       startActivity(goHome); 
         } 
     }); 


    return lecvidbtn; //My confusion is here. How to capture the return value for any of the image buttons clicked above.? 
} 
+0

我不認爲你可以做到這一點,因爲在列表視圖只列表項被點擊而不是它的孩子..所有的孩子都不可聚焦.. – ngesh

+0

@sandy,當我有一個圖像按鈕時,我可以得到結果,但是當我添加兩個圖像按鈕時,該方法仍然限制我只使用一個圖像按鈕單擊,其他圖像按鈕不響應。這就是我希望傳遞的回報價值。我需要修理那裏。 – kittu

回答

1

嘗試這種方式

public View getChildView(int groupPosition,int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
     View v = null; 
      if(convertView != null) 
       v = convertView; 
      else 
       v = inflater.inflate(R.layout.child_row, parent, false); 
      String c = (String)getChild(groupPosition, childPosition); 
      final int grpPos = groupPosition; 
      final int childPos = childPosition; 
       ImageButton button1 = (ImageButton)v.findViewById(R.id.imageButton1); 
       ImageButton button2 = (ImageButton)v.findViewById(R.id.imageButton2); 
     // and set onClickListener to this two button 
       button1.setOnClickListener(new OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
       // TODO Auto-generated method stub 

        Toast.makeText(getApplication(), "Topic Proc video is: "+topic[groupPosition]+" and Chapter is "+chapter[groupPosition][childPosition], Toast.LENGTH_LONG).show(); 
        flag = "p"; 
        Bundle bundle = new Bundle(); 
        bundle.putString("topic",topic[groupPosition]); 
        bundle.putString("chapter",chapter[groupPosition][childPosition]); 
        Intent goHome = new Intent(getApplicationContext(), VideoWeb.class); 
        goHome.putExtras(bundle); 
        startActivity(goHome); 

       } 
      )}; 
       button2.setOnClickListener(new OnClickListener(){ 

        @Override 
        public void onClick(View v) { 
       // TODO Auto-generated method stub 
        Toast.makeText(getApplication(), "Topic Lec video is: "+topic[groupPosition]+" and Chapter is "+chapter[groupPosition][childPosition], Toast.LENGTH_LONG).show(); 
        flag = "l"; 
        Bundle bundle = new Bundle(); 
        bundle.putString("topic",topic[groupPosition]); 
        bundle.putString("chapter",chapter[groupPosition][childPosition]); 
        Intent goHome = new Intent(getApplicationContext(), VideoWeb.class); 
        goHome.putExtras(bundle); 
        startActivity(goHome); 

       } 
      )}; 
      return v; 

     } 

child_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:background="#ebebeb" 
android:layout_height="50dp"> 
<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="22dp" 
    android:src="@drawable/button1" /> 

<ImageButton 
    android:id="@+id/imageButton2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginLeft="46dp" 
    android:layout_toRightOf="@+id/imageButton1" 
    android:src="@drawable/button2" /> 

</RelativeLayout> 
+0

感謝汗,這工作很好,但除了兩個圖像按鈕,我在child_row.xml中有一個textView,它顯示了這兩個按鈕旁邊的文本。我沒有改變我的child_row.xml,但用你的建議更新了代碼,文本消失了。我能看到放在這些拖曳圖像按鈕上的Toast中的正確文本,但是應該在childview上顯示的實際文本消失了。 – kittu

+0

首先,您必須根據您的設計製作您的** child_row.xml **我剛剛展示了演示版xml,而不是兩個按鈕根據您的要求進行佈局,並且您也能夠看到文本我認爲您的textview是隱藏在按鈕後面檢查您的佈局設計 – Khan

+0

是的,我的錯誤,我意識到我沒有正確設置文本到textView。非常感謝您的幫助。 – kittu

相關問題