2013-07-29 48 views
1

我需要幫助。 讓說我有一個從數據庫中獲取列表視圖:從列表視圖中更改文本如果點擊

-- car 

-- refrigerator 

-- pencil 

-- motorcycle 

這就是我想要的。當我點擊汽車或其他選項時,它將變爲斷開。

-- broken 

-- refrigerator 

-- pencil 

-- motorcycle 

lv = (ListView) findViewById(R.id.listView); 
lv.setOnItemClickListener(new OnItemClickListener() 
{ 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
{ 
    TextView mTextView = (TextView) arg1; 
    mTextView.setText("broken");  
    //Toast.makeText(getApplicationContext(), data.get(arg2).toString(),3000).show(); 
}}); 

的問題是,當我再次使用後退按鈕,進入該頁面使用此之前,它會回到像以前一樣....

任何想法? ????

這裏是我完整的代碼

package com.test.first; 

import java.util.ArrayList; 
import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Listview extends Activity 
{ 
SQLiteDatabase mydb; 
ListView lv; 
ArrayList data; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_listview); 

//=====CODE FOR SHOWING THE DATA IN TOAST ======= 
lv = (ListView) findViewById(R.id.listView); 
lv.setOnItemClickListener(new OnItemClickListener() 
{ 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
{ 
    TextView mTextView = (TextView) arg1; 
    mTextView.setText(data.get(arg2) + " has been bought !"); 


    //Toast.makeText(getApplicationContext(), data.get(arg2).toString(),3000).show(); 
}}); 

mydb = Listview.this.openOrCreateDatabase("My", MODE_PRIVATE, null); 
mydb.execSQL("CREATE TABLE IF NOT EXISTS list (id INTEGER PRIMARY KEY AUTOINCREMENT,list varchar);"); 

data = new ArrayList(); 
//=VIEW BUTTON TO SHOW DATA INSERTED IN THE LISTVIEW=======  
Cursor cursor2=mydb.rawQuery("SELECT * FROM LIST;", null); 

if (cursor2.moveToFirst()) 
{ 
    Toast.makeText(getApplicationContext(), "Shop List", 3000).show(); 
    data.clear(); 
    do 
    { 
     data.add(cursor2.getString(cursor2.getColumnIndex("list"))); 
    } 
    while (cursor2.moveToNext()); 

//====CODE FOR SHOWING DATA AS A SIMPLE LIST ITEM========================================= 
    ArrayAdapter <String> adapter=new ArrayAdapter<String>  (Listview.this,android.R.layout.simple_list_item_1,data); 
    lv.setAdapter(adapter); 

} 
else 
{ 
    Toast.makeText(getApplicationContext(), "DATA NOT AVAILABLE", 3000).show(); 
} 
cursor2.close(); 
} 
} 
+1

如果您是從數據庫中取物品列表視圖,那麼你也應該在單擊某個項目更新數據庫。如果你不這樣做,你的應用程序將只從數據庫中獲取數據(原始數據)並向你顯示這些數據,而不是你編輯過的數據。 – Razgriz

+0

你正在使用哪種類型的適配器 – 2013-07-29 10:03:00

+0

是的,我知道這一點。這就是爲什麼我需要一些解決方案來更新只能從列表視圖 –

回答

0

的問題是,當你按下後退按鈕,然後重新打開ListView控件是重新創建與原始信息的活動。該信息不會被更改幷包含Car文本,因此ListView包含汽車文本的其他時間是正常的。
你要對更新列表信息,然後調用修改的ListView:

adapter.notifyDataSetChanged() 

如果更改信息,然後按返回並重新打開Activty ListView控件都會好的。

+0

你有任何關於如何做這個步驟的例子或教程的參考? THX B4 –

+0

剛剛更新數據後,你可以稱之爲 – 2013-07-29 10:49:06

+0

@CharlesLynch我不能搜索引用指出如何Android的作品。也許,這是足夠多的,你http://i.stack.imgur.com/LXnx7.png 當按下後退按鈕,然後轉到其他活動目前通了的onPause狀態。返回時,傳遞onResume方法及其簡歷。您的適配器必須在其他時間調用getView方法,以在其中回收或創建List項目。在這兩種方法中,信息都會被重新放入文本視圖中。 – Aracem

相關問題