弹出窗口里面的ListView(android)

时间:2012-08-08 19:25:40

标签: android listview dialog popupwindow

我几天前就在搜索这个问题,但不幸的是我无法找到问题的答案。我目前正在开发一个android项目,当你单击一个按钮时,它会显示一个对话框,其中包含字符串数组资源中项目的列表视图。谢谢你。

这是我的字符串数组:

<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>

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

你的一个问题是你正在使用的“this”对象是指onclick方法中的错误内容。而不是尝试Firstaidactivity.this来获取您的活动的上下文

第二个问题是除非类扩展了ListActivity,否则不能在方法中使用setListAdapter。您需要获取listExample的引用,然后执行list.setAdapter(adapter)

答案 2 :(得分:0)

您可以尝试更改:

android:id="@+id/listExample"

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