通过数组迭代更新屏幕

时间:2012-11-01 15:54:51

标签: android arrays

我有一个数组中的名称列表,点击这些名称会将我带到一个记录屏幕,显示该名称的名称和代码。信息以匹配长度的数组提供。我希望能够点击记录屏幕上的一个按钮,将我带到相应的屏幕以获取下一个名字。

我从intent获取了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++;}

但我收到错误“我无法分配最终的局部变量,因为它是在封闭类型中定义的。”

我希望尽可能保持这种通用性,因为我希望有多达12个数组调用索引来显示信息。

任何想法都会非常感谢!

2 个答案:

答案 0 :(得分:2)

您提到的具体问题是:

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

标记为final的字段只能分配一次。在第一行中,您为其分配了一个新的TextView,这是完全冗余的,因为您希望在下一行中为布局分配对视图的引用,然后由于已经分配了最终的nameView,该引用将失败。

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

与我同样的问题。只需删除最终关键字,或者,如果您打算将其作为最终关键字,请将其分配给另一个变量:

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

答案 1 :(得分:0)

不要设置我最终 - 而是使用

this.i

在OnClickListener方法中访问它。在正常的编码约定中,你可能不会使用i作为变量,但更清楚地表明它代表什么。