如何根据id显示listview项目内容?

时间:2012-02-01 14:51:03

标签: android listview

我有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));

    }
}

这是选择列表项目和你建议我的好习惯吗?怎么做?

2 个答案:

答案 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)。