2012-08-08 37 views
0

我會在幾天前搜索這個,但不幸的是我找不到我的問題的答案。我目前正在開發一個android項目,當你點擊一個按鈕時,它會顯示一個對話框,其中包含來自字符串數組資源的項目的列表視圖。謝謝。ListView內彈出窗口(安卓)

這裏是我的字符串數組:

<string-array name="heart_attacks_and_shock"> 
<item>1</item> 
<item>2</item> 
<item>3</item> 
<item>4</item> 
</string-array> 

這裏是我的代碼:

import java.util.ArrayList; 
import com.sap.BSMA.R.string; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.Dialog; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.ListView; 
import android.widget.TextView; 

@SuppressLint("ParserError") 
public class FirstaidActivity extends Activity { 
Resources res = getResources(); 
String[] has = res.getStringArray(R.array.heart_attacks_and_shock); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.firstaid_layout); 

    ImageButton has_button = (ImageButton) findViewById(R.id.HAS); 
    has_button.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
      //set up dialog 
      Dialog dialog = new Dialog(FirstaidActivity.this); 
      dialog.setContentView(R.layout.firstaidcategoryoutput_layout); 
      dialog.setTitle("Heart attack and shock"); 
      dialog.setCancelable(true); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,has); 
      setListAdapter(adapter); 

      dialog.show(); 
     } 
    }); 
} 
} 

我對彈出窗口的xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent" 
android:background="@drawable/mainbackground"> 


<ListView 
android:id="@+id/listExample" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#CCCCCC" 
android:choiceMode="singleChoice" 
/> 

</RelativeLayout> 
+1

那麼你的問題到底是什麼?任何錯誤?什麼不起作用? – 0gravity 2012-08-08 19:28:50

+0

ops,對不起。問題是我在這些行中出現錯誤'ArrayAdapter adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1,has);'並在這裏'setListAdapter(adapter);' 有什麼建議嗎? – sap 2012-08-08 19:32:51

+0

什麼是錯誤? LogCat轉儲? – Maxim 2012-08-08 19:36:33

回答

0

你的一個問題是,「這個「你使用的對象是指你的onclick方法中的錯誤的東西。而不是嘗試Firstaidactivity.this獲取您的活動的上下文

第二個問題是,除非類擴展ListActivity,否則不能在方法內部使用setListAdapter。你需要讓你的listExample的引用,然後就list.setAdapter(適配器)

+0

謝謝。關於爲什麼用'new Interface(){}'實現接口的另一個原因是一個壞主意。 – m0skit0 2012-10-03 12:33:19

0

你可以嘗試改變:

android:id="@+id/listExample" 

android:id="@android:id/list" 
2

添加此

Dialog dialog = new Dialog(FirstaidActivity.this); 
     dialog.setContentView(R.layout.firstaidcategoryoutput_layout); 
ListView list = (ListView)dialog.findViewById(R.id.listExample); 
     dialog.setTitle("Heart attack and shock"); 
     dialog.setCancelable(true); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String> (FirstaidActivity.this,android.R.layout.simple_list_item_1,has); 
     list.setAdapter(adapter); 

     dialog.show();