2010-09-20 40 views
0

我tryied定製我的ListView,所以我用這個項目的佈局「list_item.xml」機器人如何訪問自定義列表視圖項

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    > 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/title" 
     android:layout_width="fill_parent" 
     android:layout_height="?android:attr/listPreferredItemHeight" 
     android:padding="10dp" 
     android:textSize="16dip" 
     android:textColor="#000000" 
     android:gravity="center_vertical" 
     android:background="#FFFFFF" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_weight="1"> 
    </TextView> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="0" 
     android:background="#FFFFFF" 
     android:padding="10dip" 
     android:gravity="center_vertical"> 
         <ImageView 
          android:id="@+id/pause" 
          android:src="@drawable/stop" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:onClick="pauseBtn_onClick" 
          /> 
         <ImageView 
          android:id="@+id/play" 
          android:src="@drawable/play" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:onClick="playBtn_onClick"/> 


    </RelativeLayout> 
</LinearLayout> 

就像你看到的,有2幅圖像在此佈局,是什麼我想要做的是,

當用戶點擊任何項目,該play_icon(在ListView項目第二圖像),將

消失。

所以我寫的代碼如下所示:

mp3_listView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View _view, int index , long arg3) 
      { 
       String _url = musicList.get(index).get("link").toString(); 
       LinearLayout _container = (LinearLayout)mp3_listView.getChildAt(index); 
       RelativeLayout _container2 = (RelativeLayout) _container.getChildAt(1); 
       ImageView img = (ImageView)_container2.getChildAt(1); 
       img.setVisibility(View.INVISIBLE); 
       Toast.makeText(tabDigTest.this , "GG : "+_container.findViewById(R.id.play) , Toast.LENGTH_SHORT).show(); 
       } 
} 

但發生一些奇怪的事情....因爲多個項目的IMG隱藏:

img.setVisibility(View.INVISIBLE); 

我不爲什麼因爲我只設置一個IMG到INVISIBLE ......我想我需要幫助O_o

回答

0

要檢索用戶單擊,我猜你設置了一個OnItemClickListener

ListView lv = (fecth your list vieW) 
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    //you might want to use 'view' here 
    } 
}); 

在onItemClick方法,視圖參數是你在你的ListAdapter的getView方法返回的視圖。因此,如果說,你已經返回一個LinearLayout包含三個id(「textview」,「imageview1」,「imageview2」)的孩子,你可以簡單地調用view.findViewById(R.id.imageview1)來檢索第一個ImageView。

+0

我試過了,但奇怪的事情發生了O_o – peterlawn 2010-09-24 08:35:40

+0

嗯,你能多描述一下嗎?或者在任何地方上傳你的代碼? – Julien 2010-09-24 17:16:15