2012-11-01 61 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作为变量,但更清楚地表明它代表了什么。