这就是我想要做的。我有一个从 /values/menu.xml 中保存的 xml 资源文件填充的列表视图
它里面有这个代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="menuchoices">
<item name="pv">Present Value</item>
<item name="fv">Future Value</item>
<item name="bond">Bond Pricing</item>
</string-array>
</resources>
到目前为止这么简单。然后我的 Main.java 文件如下所示:(改编自此处的其他列表视图问题)
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.menuchoices)
));
}
public void onListItemClick(ListView partent, View v, int position, long id) {
if ("pv".equals(getResources().getStringArray(R.array.menuchoices)[position])){
setContentView(R.layout.presentvalue);
}
}
}
基本上我读到一直启动新活动并不是最佳实践,所以我只是告诉 if 语句来更改内容视图。问题是——当我点击列表中的第一项时没有任何反应。我也尝试用“Present Value”代替“pv”,但它也没有帮助。
我认为这是因为我从这里的List View selection 之类的帖子中获取代码以启动新的 Activity)但我不知道如何更改它,以便它与外部 xml 资源文件一起使用。
这应该是一个简单的修复吧?
提前致谢
最大限度
Ps 所有其他东西都有效(presentvalue.xml 文件位于布局文件夹中,当我运行应用程序时列表正确显示)
编辑 //
这是有问题的行
public void onListItemClick(ListView parent, View v, int position, long id) {
if (view.getText().toString().equals("Present Value")){
startActivity(new Intent(Main.this, PresentValue.class));
}
}