在onItemClick中更改listview的文本(listview由字符串数组/ arrayAdapter填充)

时间:2014-05-28 20:08:10

标签: android listview android-arrayadapter

我想更改listview中的文字。 在我的onCreate中,我填写了listview并设置了一个OnItemClicklistener:

的onCreate:

ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, trainingstage);

setListAdapter(adapter);

ListView listView = getListView();

listView.setOnItemClickListener(this);

onItemClick:

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

TextView tv = (TextView)view.findViewById(android.R.id.text1);

    switch (position) {

    case 0:

        tv.setText("Hello");

        IF I CLICK TEXT SHOULD CHANGE!
        break;

工作正常,但如果我重新启动活动,则旧文本会恢复。如果我点击listitem,我想永远改变文本!

2 个答案:

答案 0 :(得分:1)

您可以通过两个选项实现此目的:

更轻松
更改text中的trainingstage并将字符串数组设置为STATIC!

更好的方式
如果要在单击后保存文本,则需要某种数据库来存储更改。如果要保存不同的sqlite,请使用text。如果text的数量已修复,则最好使用SharedPreferences。您还需要从此处恢复text以在TextView开始时设置Activity

答案 1 :(得分:0)

ListViews顾名思义就是将数据呈现给用户的VIEW。您可以使用ArrayAdapter从DATA填充ListView。此示例中的DATA是您的trainingstage字符串列表。

这是一种在Android上使用的良好数据分离技术。如果您只是更改textview,那么使用该数据的任何其他内容都不会更新,您只更新了视图。您需要做的是实际更新DATA层(trainingstage),然后将其传递给适配器,然后由列表视图呈现。

如果不确切知道在哪里以及如何获得trainingstage数据,很难给出关于如何做到这一点的建议,但一个简单的例子是:

onItemClick中的

trainingstage.get(position)=“我的新字符串”; parent.notifyDatasetChanged();

重新启动活动时,这可能不会持续存在。您需要执行其他步骤来保存DATA的状态。 Aashish在上面的帖子中简要谈到了这一点。