2012-08-08 61 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();