Android 如何从自定义ListView获取所选项目?

Android 如何从自定义ListView获取所选项目?,android,listview,Android,Listview,我有一个自定义的ListView,其中每一行都包含许多文本视图。单击列表项时,不会调用OnListItemClick()。那么,您如何获得自定义列表视图的选择 谢谢你的帮助 行的XML: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal

我有一个自定义的ListView,其中每一行都包含许多文本视图。单击列表项时,不会调用
OnListItemClick()
。那么,您如何获得自定义列表视图的选择

谢谢你的帮助

行的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/priorityView"
        android:layout_width="20dip"
        android:layout_height="match_parent"
        android:background="#cccccc"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="2dip" />


    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:weightSum="1.0"
        >
        <TextView
        android:id="@+id/dateText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:paddingBottom="2dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:paddingTop="2dip"
        android:text="@string/empty"
        android:textSize="20dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/monthText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:padding="5dip"
        android:text="@string/empty"
        android:textSize="10dip" >
    </TextView>

    </LinearLayout>



    <TextView
        android:id="@+id/timeText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="5dip"
        android:text="@string/empty" >
    </TextView>

    <TextView
        android:id="@+id/titleText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="5dip"
        android:text="@string/empty"
        android:textStyle="bold"
        android:layout_weight="1.0" >
    </TextView>

    <CheckBox
        android:id="@+id/selectedCheckbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dip" >
    </CheckBox>

</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true" >
    </ListView>


</RelativeLayout>
尝试使用
OnItemClick()
而不是
OnListItemClick()

这是由
SimpleCursorAdapter
通过发送光标创建的自定义列表视图

        SimpleCursorAdapter yearadapter =
            new SimpleCursorAdapter(this, R.layout.listview, yearcursor, yearfrom, yearto);
        setListAdapter(yearadapter);
        amount.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {

                  //Your code when item get clicked
                 }
            });   
SimpleCursorAdapter年适配器=
新的SimpleCursorAdapter(this,R.layout.listview,yearcursor,yearfrom,yearto);
setListAdapter(yearadapter);
amount.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//单击项目时的代码
}
});   
它应该可以工作。

尝试使用
OnItemClick()
而不是
OnListItemClick()

这是由
SimpleCursorAdapter
通过发送光标创建的自定义列表视图

        SimpleCursorAdapter yearadapter =
            new SimpleCursorAdapter(this, R.layout.listview, yearcursor, yearfrom, yearto);
        setListAdapter(yearadapter);
        amount.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {

                  //Your code when item get clicked
                 }
            });   
SimpleCursorAdapter年适配器=
新的SimpleCursorAdapter(this,R.layout.listview,yearcursor,yearfrom,yearto);
setListAdapter(yearadapter);
amount.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//单击项目时的代码
}
});   
它应该会起作用。

我找到了解决办法

对于自定义
列表视图
中的每个小部件,包括布局小部件,必须将
android:focusable
属性设置为
false

我找到了解决办法


对于自定义
列表视图
中的每个小部件,包括布局小部件,必须将
android:focusable
属性设置为
false

下面的代码将为您提供列表视图项:

   private ListView listView = (ListView) findviewbyid(.........);

       listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            View v = v.getChildAt(arg2);//This will give the listview item


        }
    });
私有ListView ListView=(ListView)findviewbyid(……);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
View v=v.getChildAt(arg2);//这将给出listview项
}
});

下面的代码将为您提供列表视图项:

   private ListView listView = (ListView) findviewbyid(.........);

       listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            View v = v.getChildAt(arg2);//This will give the listview item


        }
    });
私有ListView ListView=(ListView)findviewbyid(……);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
View v=v.getChildAt(arg2);//这将给出listview项
}
});

从列表和列表项中放入布局xml。从列表和列表项中放入布局xml。My class将ListView子类化。没有要重写的OnItemClick方法。因此,您应该使用setOnItemClickListener()方法,使用它注册一个新的OnItemClickListener,并在OnItemClick()方法中单击某个项时放置您想要执行的任何操作,如Venture所写。对不起,我的意思是它将ListActivity子类化。我无法重写该方法。如果是这样,只需将其更改为Activity并添加两行onitemClick()代码。它将执行magicMy类的子类ListView。没有要重写的OnItemClick方法。因此,您应该使用setOnItemClickListener()方法,使用它注册一个新的OnItemClickListener,并在OnItemClick()方法中单击某个项时放置您想要执行的任何操作,如Venture所写。对不起,我的意思是它将ListActivity子类化。我无法重写该方法。如果是这样,只需将其更改为Activity并添加两行onitemClick()代码。它会变魔术的