2012-11-01 62 views
2

我有一個數組中的名稱列表,然後點擊這些名稱將我帶到一個記錄屏幕,顯示該名稱的名稱和代碼。信息以匹配長度的數組提供。我希望能夠點擊記錄屏幕上的一個按鈕,該按鈕會將我帶到相應的屏幕以顯示下一個名稱。迭代通過數組更新屏幕

我從意圖獲得listView項的索引i,然後用它從數組中獲取該名稱的正確數據。

下面是我的記錄屏幕代碼。

public class RecordActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_record); 

Intent intent = getIntent(); 
final int i = intent.getIntExtra(MainActivity.EXTRA_INDEX, 0); 

final String[]names = getResources().getStringArray(R.array.names); 
final String[]codes = getResources().getStringArray(R.array.codes); 

final TextView nameView = new TextView(this); 
nameView = (TextView) findViewById(R.id.vNames); 
String vName = names[i]; 
nameView.setText(vName); 

TextView codeView = new TextView(this); 
codeView = (TextView) findViewById(R.id.vCodes); 
String vCode = codes[i]; 
codeView.setText(vCode); 

nextButton = (Button) findViewById(R.id.nextButton); 
nextButton.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v) { 

    } 
    }}); 
} 

在我想要做的事的按鈕的onClick方法,如「設定I = I + 1,然後刷新數據」,但作爲新的節目我不完全知道如何「寫」這個。

我已經試過

if (i<names.length) { 
    nameView.setText(names[i]); 
    i++;} 

,但我得到了錯誤「最終的局部變量i不能分配,因爲它是在一個封閉的類型定義」。

我想盡可能保持一般,因爲我想有多達12個數組調用索引來顯示信息。

任何想法將非常感謝!

+0

你不能改變我的值,因爲你已經將它設置爲最終值,這使它成爲一個常量,並保持它爲你設置的值。這就是爲什麼你得到你的錯誤 –

回答

2

你提到的具體問題是在這裏:

final TextView nameView = new TextView(this); 
nameView = (TextView) findViewById(R.id.vNames); 

場標記爲最終只能被分配一次。在第一行中,您爲它指定了一個新的TextView,這是完全多餘的,因爲您希望從下一行的佈局中爲視圖分配一個引用,然後由於已經分配了最終的nameView而失敗。

final TextView nameView = (TextView) findViewById(R.id.vNames); 

同樣的問題與我。只需刪除final關鍵字,或者,如果你想要它是最終的,將其分配到不同的變量:

int x = i; 
if (x<names.length) { 
    nameView.setText(names[x]); 
    x++;} 
+0

謝謝!那整理出來了。我嘗試從@我去掉'我'的'最後',但我現在得到了「不能在一個不同的方法中定義的內部類中使用非最終變量」(使用Eclipse)。我應該如何定義我?有沒有更簡單的方法來重新定義變量?謝謝 – user1791710

+0

是的,的確如此。我猜你正在點擊監聽器中做些什麼?代碼會有幫助,但我的猜測是使用我的建議,在方法內部創建一個新變量並將i的值賦給它。 – Simon

+0

是的,我試圖把它放在我的按鈕 nextButton =(Button)findViewById(R.id.nextButton); nextButton。setOnClickListener(新OnClickListener(){ 公共無效的onClick(視圖v){ INT X = I;如果 (X user1791710

0

不要設置我最後的 - 而不是使用

this.i 

訪問它在OnClickListener方法。在正常的編碼約定中,你可能不會使用i作爲變量,但更清楚地表明它代表了什麼。