我有ListView活动类:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] naziviMolitvi = getResources().getStringArray(R.array.nazivi_molitvi);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, naziviMolitvi));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Intent intent = new Intent(getApplicationContext(), Molitva.class);
//Bundle bundle = new Bundle();
//bundle.putInt("pozicija", position);
//intent.putExtras(bundle);
startActivity(intent);
// Toast.makeText(getApplicationContext(),
// ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
}
我将列表项存储在strings.xml文件中的字符串数组中:
<string-array name="nazivi_molitvi">
<item>Дневне молитве</item>
<item>Символ вере</item>
<item>Псалм 50</item>
<item>Свакодневна молитва</item>
<item>Молитва Пресветој Богородици у невољи и потиштености</item>
<item>Поздрав Богородици</item>
<item>Јутарња молитва</item>
<item>Вечерња молитва</item>
<item>Молитва Анђелу Чувару</item>
<item>Молитва пред Свето Причешће</item>
<item>Молитва после Светог Причешћа</item>
<item>Молитва за међусобни мир</item>
<item>Молитва пре учења</item>
<item>Молитва после учења</item>
<item>Молитва пре доручка</item>
<item>Молитва после доручка</item>
<item>Молитва пре ручка</item>
<item>Молитва после ручка</item>
<item>Молитва пре вечере</item>
<item>Молитва после вечере</item>
<item>Десет Божијих Заповести</item>
<item>Две највеће Христове Заповести</item>
<item>Химна Светом Сави</item>
<item>Српска Химна "Боже правде"</item>
</string-array>
现在,当用户点击单个项目时,我想显示该视图的扩展文本。存储此文本的位置?如果我将文本存储在字符串数组中,那么我不知道如何引用其中的单个项目。 也许为每个项目创建具有特定名称的字符串,并且当用户在列表视图中单击项目以具有switch语句时,如下所示:
public class Molitva extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.molitva);
Bundle bundle = this.getIntent().getExtras();
int pozicija = bundle.getInt("pozicija");
TextView tv = (TextView) this.findViewById(R.id.textView1);
tv.append(" - " + getPrayerText(pozicija));
}
}
这是选择列表项目和你建议我的好习惯吗?怎么做?
答案 0 :(得分:1)
我认为扩展文本列表与列表大小相同,索引相等且相应。
您还可以将扩展文本列表存储在arrays.xml上,并像使用非扩展列表一样保留它们 - 使用getResources().getStringArray
。您可以使用在包中传递的位置来获取展开文本列表中的项目。
String[] expanded_text = getResources().getStringArray(R.array.expanded_text);
//获取位置pozicija
expanded_text[pozicija];
答案 1 :(得分:1)
我有什么用,如果有这样的东西
资产或原始文件中的JSON对象
[
{
name="Дневне молитве",
content="some content"
},
{
name="Символ вере",
content="some other content"
}
]
Java对象
class Molitva {
public String name;
public String content;
}
使用谷歌gson(http://code.google.com/p/google-gson/)库,它将被轻易转换为Molitva阵列
Molitva[] molitvas = new Gson().fromJson(stringWithJsonArrays, Molitva[].class);
下一步将在Molitva类中实现Parcelable并将其意图发送到下一个活动。或者您可以按部件发送。
解决方案仅供参考。如果你的应用程序中有超过9000个Molitvas,请使用数据库(sqlite)。