2012-04-29 66 views
0

這是我正在嘗試做的。 我有一個從保存在/values/menu.xmlListView contentview從外部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文件看起來像這樣:(改編自其它這裏列表視圖問題)

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語句來改變內容查看。問題是 - 當我點擊列表中的第一個項目時沒有任何反應。我也嘗試用「現值」來代替「pv」,但它也沒有幫助。

我覺得這個我beacuase我採取了代碼的帖子,問題是List View selection to start a new Activity),但我不知道如何改變它,所以它與外部XML資源文件的工作。

這應該是一個簡單的修復嗎?

在此先感謝

最大

附:所有其他的東西工程(該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)); 
    } 
    } 

回答

1

函數onListItemClick()通常與ListActivity一起使用。有一對夫婦修復此:

    • 改線extends Activityextends ListActivity
    • 刪除您的ListView定義。
    • 更改您的main.xml ID從@+id/listView1@android:id/list
    • 類定義中添加implements OnItemClickListenerextends Activity
    • 改變功能onListItemClickonItemClick

嘗試移動你的menuchoices block:

<string-array name="menuchoices"> 
    <item name="pv">Present Value</item> 
    <item name="fv">Future Value</item> 
    <item name="bond">Bond Pricing</item> 
</string-array> 

進入你的字符串。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"); 

(小問題,您在單詞「父」中有拼寫錯誤)

那是怎麼回事?

+0

我改變了它,但當我點擊屏幕上的任何一項時,仍然沒有任何反應。正如我前面所說,列表和一切偉大工程剛剛的onclick沒有做任何事情(當我點擊有事沒事出現在logcat中) – Killerpixler

+0

只是我有錯誤,現在 觀點不能得到解決 附:錯字是在這裏堆棧,但不是在我的代碼 – Killerpixler

+0

如果你的佈局不是太大使用[ViewFlipper](http://developer.android.com/reference/android/widget/ViewFlipper.html)。但我不認爲調用'setContentView()'重新創建佈局是可行的,你可以像這樣設置一個用於onCreate()的成員變量'setContentView(layoutID)',設置'layoutID = R.layout。 present_value'在你的itemClick函數中,然後自己調用onCreate(),但這看起來很危險。 – Sam