我在弹出窗口中有一个列表视图,从我的asynctask获取的listview内容,我已将我的asyctask中的内容添加到 mcodeList (声明为ArrayList<String>
)。
我检查了内容和这是来自Log:
Response : > [08-00631 can be found in LAB A, 08-00635 can be found in LAB A]
这种情况当我得到 mcodeList 的内容时,我不希望它直接显示在弹出窗口中,所以我没有设置listview adapter onPostExecute
。但我希望当我点击按钮弹出窗口时,listview的内容( mcodeList )将出现在弹出窗口中。
这是弹出窗口上的代码:
try {
LinearLayout viewGroup = (LinearLayout) findViewById(R.id.popup_element);
LayoutInflater inflater = (LayoutInflater) ListLocationActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.list_popup, viewGroup);
pWindow = new PopupWindow();
pWindow.setContentView(layout);
pWindow.setWidth(300);
pWindow.setHeight(200);
pWindow.showAtLocation(layout, Gravity.CENTER, 0, 0);
Log.d("Response : ", "> "+ mcodeList);
// Updating parsed JSON data into listview
ListView lv_popup = (ListView) findViewById(R.id.list_info);
lv_popup.setAdapter(new ArrayAdapter<String>(this, R.layout.popup, R.id.mcode, mcodeList));
btnClose = (Button)layout.findViewById(R.id.btn_close);
btnClose.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
pWindow.dismiss();
}
});
} catch(Exception e) {
e.printStackTrace();
}
这是我的弹出窗口布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_element"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background ="#B2FFFF"
android:orientation="vertical" >
<ListView android:id="@+id/list_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#B2E0FF"
android:dividerHeight="1dp"/>
<Button android:id="@+id/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Close" />
</LinearLayout>
这是我的列表项布局:
<TextView
android:id="@+id/mcode"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
我的第一个问题是,当我点击按钮弹出窗口时,弹出窗口出现,但列表视图没有显示。第二个问题是当我点击关闭按钮时,我无法关闭弹出窗口,这就像我的程序崩溃一样,但它仍在运行。
我得到这个警告记录如下:
D/AbsListView(17047): Get MotionRecognitionManager
W/System.err(17047): java.lang.NullPointerException
W/System.err(17047): at com.example.assetscanner.ListLocationActivity.initiatePopupWindow(ListLocationActivity.java:442)
W/System.err(17047): at com.example.assetscanner.ListLocationActivity.infoAsset(ListLocationActivity.java:457)
W/System.err(17047): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(17047): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(17047): at android.view.View$1.onClick(View.java:3655)
W/System.err(17047): at android.view.View.performClick(View.java:4162)
W/System.err(17047): at android.view.View$PerformClick.run(View.java:17082)
W/System.err(17047): at android.os.Handler.handleCallback(Handler.java:615)
W/System.err(17047): at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err(17047): at android.os.Looper.loop(Looper.java:137)
W/System.err(17047): at android.app.ActivityThread.main(ActivityThread.java:4867)
W/System.err(17047): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(17047): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(17047): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
W/System.err(17047): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
W/System.err(17047): at dalvik.system.NativeStart.main(Native Method)
我从未发现过这样的错误,所以请有人帮助我。 感谢之前
答案 0 :(得分:4)
首先你应该改变这个
ListView lv_popup = (ListView) findViewById(R.id.list_info);
使用
ListView lv_popup = (ListView) layout.findViewById(R.id.list_info);
这是因为listview
来自虚增的layout