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

时间:2015-07-15 19:22:31

标签: android arrays popupwindow

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

我相信我的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();
        }
    };
}

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

弹出窗口布局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>

1 个答案:

答案 0 :(得分:0)

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

createArray()

所以我并不感到惊讶,它不起作用。取决于您想要实现的目标 - 在onCreate中调用它,或者作为onClickListener中的第一个调用 - &gt;的onClick。

更新:最后我编译了你的代码。正如我写的那样 - 你必须在clickListener中包含createArray(),你写道,你做到了。这,你错误地做了什么是使用ArrayAdapter弄乱任何东西。将ArrayAdaper替换为:

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

它会起作用。

干杯。