2012-02-01 77 views
0

我的ListView活動類:如何顯示基於id的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)); 

    } 
} 

是,對於選擇列表項,你建議我有什麼好的做法?這個怎麼做?

回答

1

我會假設擴展文本列表的大小與您的列表大小相同,並且索引是相等和相應的。

您還可以將擴展文本列表存儲在arrays.xml中,並像使用非擴展列表一樣獲取它們 - 使用getResources().getStringArray。您可以使用您在包中傳遞的位置來獲取擴展文本列表中的項目。

String[] expanded_text = getResources().getStringArray(R.array.expanded_text); 

//在位置獲得該項目pozicija

expanded_text[pozicija]; 
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/)庫它將被transphormed到Molitva的陣列會容易

Molitva[] molitvas = new Gson().fromJson(stringWithJsonArrays, Molitva[].class); 

下一步被實現Parcelable在Molitva班,併發送它意圖到下一個活動。或者你可以通過部分發送。

解決方法僅用於提問。如果你的應用程序中有超過9000個Molitvas,使用數據庫(sqlite)。

+0

好的答案,但像Josephus Villarey說的那樣簡單,因爲他的解決方案不需要外部庫。我會有最多30個,也許40個祈禱。 – 2012-02-01 15:28:00

+0

確定它是:)我只是喜歡抽象,並且害怕在ids中混亂:) – logcat 2012-02-01 16:08:39