我想更改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,我想永远改变文本!
答案 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在上面的帖子中简要谈到了这一点。