这就是我想要做的。 我有一个listview,它是从保存在/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文件看起来像这样:(改编自其他listview问题)
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语句来改变contentview。问题是 - 当我点击列表中的第一项时没有任何反应。我也尝试用“现值”代替“pv”,但它也没有帮助。
我认为这是我的尝试,我从这里的帖子List View selection to start a new Activity获取了代码,但我不知道如何更改它以便它可以与外部xml资源文件一起使用。
这应该是一个简单的解决方法吗?
提前谢谢
最高
P.S。所有其他的东西都有效(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));
}
}
答案 0 :(得分:1)
函数onListItemClick()
通常与ListActivity一起使用。有几个修复:
extends Activity
更改为extends ListActivity
。@+id/listView1
更改为@android:id/list
implements OnItemClickListener
extends Activity
onListItemClick
更改为onItemClick
尝试移动menuchoices
块:
<string-array name="menuchoices">
<item name="pv">Present Value</item>
<item name="fv">Future Value</item>
<item name="bond">Bond Pricing</item>
</string-array>
在您的string.xml文件中,我们可以简化您的适配器(假设您上面做了更改#1):
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
R.array.menuchoices));
我们还可以浓缩您测试菜单选项的方式:
"pv".equals(getResources().getStringArray(R.array.menuchoices)[position])
变为:
view.getText().toString().equals("Present Value");
(小点,“父母”一词中有拼写错误)
怎么样?