【发布时间】:2015-09-13 16:45:13
【问题描述】:
我是 Android Studio 的新手,所以如果您对我有耐心和(我的菜鸟问题),我将不胜感激。
我创建了一个带有自定义适配器的ListView,它显示了国家名称和价值。我希望当您单击Country 时,它会启动一个新活动并在其上显示国家名称、价值和人口。
我的问题是我应该如何从资源文件中的字符串数组中获取相应的数据? 例如,当我单击阿根廷时,它会将其名称、注释和货币(未显示在列表视图中)放入(不同的?)键和 将其发送到新的活动,我将在其中将其取回并显示。
这是我的代码。
String.xml:
<string-array name="r_arrayPais">
<item>Argentina</item>
<item>Bolívia</item>
<item>Brasil</item>
<item>Chile</item>
<item>Colômbia</item>
<item>Equador</item>
<item>Guiana Francesa</item>
<item>Guiana</item>
<item>Paraguai</item>
<item>Peru</item>
<item>Surinami</item>
<item>Uruguai</item>
<item>Venezuela</item>
</string-array>
<string-array name="r_arrayNota">
<item>Pop 10kk</item>
<item>Pop 11kk</item>
<item>Pop 12kk</item>
<item>Pop 13kk</item>
<item>Pop 14kk</item>
<item>Pop 15kk</item>
<item>Pop 16kk</item>
<item>Pop 17kk</item>
<item>Pop 18kk</item>
<item>Pop 19kk</item>
<item>Pop 20kk</item>
<item>Pop 21kk</item>
<item>Pop 22kk</item>
</string-array>
<string-array name="r_arrayMoney">
<item>Money 10kk</item>
<item>Money 11kk</item>
<item>Money 12kk</item>
<item>Money 13kk</item>
<item>Money 14kk</item>
<item>Money 15kk</item>
<item>Money 16kk</item>
<item>Money 17kk</item>
<item>Money 18kk</item>
<item>Money 19kk</item>
<item>Money 20kk</item>
<item>Money 21kk</item>
<item>Money 22kk</item>
</string-array>
MainActivity.class
public class MainActivity extends ActionBarActivity {
public final static String DADOS = "patrick.flags.dados";
ListView j_listview;
String[] j_paises;
String[] j_nota;
String[] j_money
int[] j_flags =
{
R.drawable.flag_argentina,
R.drawable.flag_bolivia,
R.drawable.flag_brazil,
R.drawable.flag_chile,
R.drawable.flag_colombia,
R.drawable.flag_equador,
R.drawable.flag_france,
R.drawable.flag_guyana,
R.drawable.flag_paraguay,
R.drawable.flag_peru,
R.drawable.flag_suriname,
R.drawable.flag_uruguay,
R.drawable.flag_venezuela
};
FlagAdapter j_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
j_listview = (ListView)findViewById(R.id.l_lView);
j_paises = getResources().getStringArray(R.array.r_arrayPais);
j_nota = getResources().getStringArray(R.array.r_arrayNota);
j_money = getResources().getStringArray(R.array.r_arrayMoney);
j_adapter = new FlagAdapter(getApplicationContext(),R.layout.row);
j_listview.setAdapter(j_adapter);
j_listview.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
int i = 0;
for(String paises : j_paises)
{
FlagDataProvider dataProvider = new FlagDataProvider(j_flags[i], paises, j_nota[i]);
j_adapter.add(dataProvider);
i++;
}
j_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When I click ,for example, on Argentina, it will put its
//name,note and money(which is not showing in the listview) in (different?) key(s) and
//send it to the new activity where I will get it back and display.
Intent j_intent = new Intent (getApplicationContext(), ThirdActivity.class);
j_intent.putExtra(DADOS,j_dados);
startActivity(j_intent);
}
});
}
【问题讨论】: