我有一个数组中的名称列表,点击这些名称会将我带到一个记录屏幕,显示该名称的名称和代码。信息以匹配长度的数组提供。我希望能够点击记录屏幕上的一个按钮,将我带到相应的屏幕以获取下一个名字。
我从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个数组调用索引来显示信息。
任何想法都会非常感谢!
答案 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作为变量,但更清楚地表明它代表什么。