2010-09-20 39 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