如何在Android的popupWindow中显示一个字符串数组?

How to display a string array in popupWindow in Android?

我在将字符串数组添加到弹出窗口时遇到问题 Window。 我想要的是从弹出窗口中显示的数组中随机获取一项。

我相信我的 ArrayAdapter 是正确的,但我不知道如何放置 setAdapter。 我该如何设置呢? 我希望随机数组项显示在 TextView id: txtViewArrayContent

我是 Android 的新手,所以如果我以正确的方式进行此操作,请告诉我。 java/xml 个文件在下面 - 感谢您的查看!

主 Java 文件:

public class MainActivity extends Activity {

    Button btnClosePopup;
    Button btnCreatePopup;
    String[] mAnimals;
    String randomStr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        createArray();

        btnCreatePopup = (Button) findViewById(R.id.button1);
        btnCreatePopup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                customPopupWindow();
            }
        });
    }
    private void createArray() {

        Resources res = getResources();
        mAnimals = res.getStringArray(R.array.animalArray);
        randomStr = mAnimals[new Random().nextInt(mAnimals.length)];
    }

    private PopupWindow popupWin;

    private void customPopupWindow(){

        try {
            LayoutInflater inflater = (LayoutInflater) MainActivity.this
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.screen_popup,
                    (ViewGroup) findViewById(R.id.popup_element));
            popupWin = new PopupWindow(layout, 600, 600, true);
            popupWin.showAtLocation(layout, Gravity.CENTER, 0, 0);

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.screen_popup, Integer.parseInt(randomStr));
            // Set Adapter?

            btnClosePopup = (Button) layout.findViewById(R.id.btn_close_popup);
            btnClosePopup.setOnClickListener(cancel_button_click_listener);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private View.OnClickListener cancel_button_click_listener = new View.OnClickListener() {
        public void onClick(View v) {
            popupWin.dismiss();
        }
    };
}

数组xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="animalArray">
        <item>Cow</item>
        <item>Pig</item>
        <item>Bird</item>
        <item>Sheep</item>
    </string-array>

</resources>

弹出Window布局xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/popup_element"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ff7c3f48"
    android:orientation="vertical"
    android:padding="10sp" >

    <TextView
        android:id="@+id/txtView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5sp"
        android:text="Title Goes Here"
        android:textSize="25sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txtViewArrayContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5sp"
        android:text="Content Goes Here" />

    <Button
        android:id="@+id/btn_close_popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Close" />

</LinearLayout>

我简单地检查了你的代码 - 你没有在任何地方打电话:

createArray()

所以我并不感到惊讶,它不起作用。根据您想要实现的目标 - 在 onCreate 中调用它,或者在 onClickListener 中首次调用 -> onClick。

更新: 最后我编译了你的代码。正如我所写 - 您必须在 clickListener 中包含 createArray(),并且您写道,您做到了。这个,你做错了什么是用 ArrayAdapter 弄乱了任何东西。用这个替换 ArrayAdaper 行:

((TextView) layout.findViewById(R.id.txtViewArrayContent)).setText(randomStr);

它会起作用的。

干杯。