android如何访问自定义列表视图项

时间:2010-09-20 08:07:15

标签: android

我试图自定义我的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

1 个答案:

答案 0 :(得分: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方法中,view参数是您在ListAdapter的getView方法中返回的视图。因此,如果你已经返回了一个包含三个带id的子项(“textview”,“imageview1”,“imageview2”)的LinearLayout,你只需调用view.findViewById(R.id.imageview1)来检索第一个ImageView。