从listview android中删除一个单击的项目

时间:2015-08-30 09:22:50

标签: android

public class ListCategorieActivity extends Activity implements AdapterView.OnItemClickListener {
public static String RISULTATO = "RISULTATO";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_categorie);
    ListView listview = (ListView) findViewById(R.id.listView1);
    listview.setOnItemClickListener(ListCategorieActivity.this);
}

public void onItemClick(AdapterView<?> l, View v, int position, long id) {
    Bundle bundle = new Bundle();
    Intent mIntent = new Intent();
    String[] some_array = getResources().getStringArray(R.array.sections);
    bundle.putString(RISULTATO,some_array[position]);
    mIntent.putExtras(bundle);
    setResult(RESULT_OK, mIntent);
    finish();
}

活动ListCategorieActivity显示可点击的项目列表。我的任务是在单击项目时从列表视图中删除(删除)该项目。我如何使用此代码完成此任务?

activity_list_categorie.xml:

<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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.utente.myapplication.ListCategorieActivity">

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:entries="@array/sections" >
</ListView>

array.xml:

<resources>
<string-array name="sections">
    <item >OG 1</item>
    <item >OG 2</item>
    <item >OG 3</item>
    <item >OG 4</item>
    <item >OG 5</item>
    <item >OG 6</item>
    <item >OG 7</item>
    <item >OG 8</item>
    <item >OG 9</item>
    <item >OG 10</item>
    <item >OG 11</item>
    <item >OG 12</item>
    <item >OG 13</item>
    <item >OS 1</item>
    <item >OS 2-A</item>
    <item >OS 2-B</item>
    <item >OS 3</item>
    <item >OS 4</item>
    <item >OS 5</item>
    <item >OS 6</item>
    <item >OS 7</item>
    <item >OS 8</item>
    <item >OS 9</item>
    <item >OS 10</item>
    <item >OS 11</item>
    <item >OS 12-A</item>
    <item >OS 12-B</item>
    <item >OS 13</item>
    <item >OS 14</item>
    <item >OS 15</item>
    <item >OS 16</item>
    <item >OS 17</item>
    <item >OS 18-A</item>
    <item >OS 18-B</item>
    <item >OS 19</item>
    <item >OS 20-A</item>
    <item >OS 20-B</item>
    <item >OS 21</item>
    <item >OS 22</item>
    <item >OS 23</item>
    <item >OS 24</item>
    <item >OS 25</item>
    <item >OS 26</item>
    <item >OS 27</item>
    <item >OS 28</item>
    <item >OS 29</item>
    <item >OS 30</item>
    <item >OS 31</item>
    <item >OS 32</item>
    <item >OS 33</item>
    <item >OS 34</item>
    <item >OS 35</item>
</string-array>

我想我没有使用适配器。这是正确的吗?

3 个答案:

答案 0 :(得分:1)

只需添加listview.getAdapter.remove(position);在OnItemClick方法中。我想你使用的是ArrayAdapter。

修改

我担心我的解释很草率。 OnItemClick方法有4个参数:AdapterView l是ListView,其子视图被观察,int position是ListView中的子位置;如果(且仅当)列表适配器是ArrayAdapter对象,则remove(Object item)方法可用,并且可用于删除列表项;为了获得正确的对象,必须调用

Object item =((ArrayAdapter)l.getAdapter())。getItem(position);

获取要删除的对象;然后,((ArrayAdapter)l.getAdapter())。remove(item);可以调用它来删除所选对象。

答案 1 :(得分:0)

您可以将字符串资源放入Arraylist,只需使用Tkinter方法删除列表视图中的元素。

答案 2 :(得分:0)

您有2个选项

使用ArrayAdapter的remove()方法从列表中删除项目。

Object toRemove = arrayAdapter.getItem([POSITION]);
arrayAdapter.remove(toRemove);

或者修改ArrayList并调用notifyDataSetChanged()。

arrayList.remove([index]);
arrayAdapter.notifyDataSetChanged();