单击其中的按钮时删除自定义项

时间:2011-10-05 19:28:08

标签: android android-listview listitem

我有ListView个自定义列表项,其布局如下:

<?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/itemNumberText" 
               android:text="1." android:textSize="16sp"
               android:textStyle="bold" 
               android:layout_height="match_parent"
               android:layout_width="33dp" 
               android:gravity="center_vertical|center_horizontal"/>

        <ImageView android:src="@drawable/item"
               android:id="@+id/imageView1" 
               android:layout_height="match_parent"
               android:layout_width="47dp"/>

        <LinearLayout android:id="@+id/linearLayout1"
               android:orientation="vertical"
               android:layout_height="wrap_content"
               android:layout_width="143dp">

              <TextView android:text="name" 
                        android:id="@+id/text1" 
                        android:layout_width="wrap_content" 
                        android:layout_height="wrap_content" 
                        android:textSize="16sp" android:textStyle="bold"  
                        android:textColor="#f5cd10"></TextView>

             <LinearLayout android:id="@+id/linearLayout2" 
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent">

                    <TextView android:id="@+id/text2"
                              android:layout_height="wrap_content" 
                              android:text="amount" 
                              android:textColor="#ffffff"
                              android:layout_width="wrap_content"/>

                    <TextView android:text=" unit" 
                              android:id="@+id/text4"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"/>
            </LinearLayout>

            <TextView android:text="price"
                      android:id="@+id/text3"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"/>

        </LinearLayout>
        <RelativeLayout android:layout_height="match_parent" 
                        android:id="@+id/relativeLayout1"
                        android:layout_width="match_parent">

            <Button android:layout_width="wrap_content" 
                    android:layout_height="wrap_content"  
                    android:onClick="itemDeleteButtonClicked" 
                    android:background="@drawable/item_button_style_selector" 
                    android:text="Delete Item" android:id="@+id/list_button" 
                    android:layout_alignParentRight="true" 
                    android:layout_alignParentBottom="true"/>

       </RelativeLayout>

</LinearLayout>

从上面看,我提到了Button的方法,输入

android:onClick="itemDeleteButtonClicked" 

以下是方法的代码:

 public void itemDeleteButtonClicked(View v)
 {
    int index;
    index=itemsListView.getSelectedItemPosition();//itemsListView is the listview
    list.remove(index);//list is the list of data to be shown in listview
    adapter.notifyDataSetChanged();
 }

我使用了SimpleAdapter并且没有自定义。这是:

//create base adapter for listview 
adapter= new SimpleAdapter( 
             this, list, R.layout.detailed_info_list_item, 
               new String[] {"number","item","amount","price","unit"}, 
               new int[] {R.id.itemNumberText,R.id.text1,R.id.text2, R.id.text3,R.id.text4} 
             ); 
setListAdapter(adapter);

但它不起作用。那就是它没有删除被点击的项目。你能给我一些建议。

2 个答案:

答案 0 :(得分:1)

如果确实选择了列表项,方法getSelectedItemPosition()仅返回正确的值。如果按下列表项中的按钮,则可能不会根据列表视图选择列表项。调用getSelectedItemPosition()后检查索引变量的值。如果为-1,则不选择列表项,您必须自己选择正确的列表项。

答案 1 :(得分:0)

在列表视图中设置OnItemClickListener以将项目位置存储到字段中,然后您就会知道选择了哪个项目。

您可以尝试调用setSelection使getSelectedItemPosition工作,但设置字段更简单