如何在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);
它会起作用的。
干杯。
我在将字符串数组添加到弹出窗口时遇到问题 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);
它会起作用的。
干杯。