1

在我的项目中,顶部有四个按钮,当我单击一个时,我只显示一个弹出窗口,但是如何更新弹出窗口的内容视图。比如listview的notifidatasetchanged。我只想更新 popubwindow 的 contentview 而不将其解散和重新创建。在我的弹出窗口中是一个列表视图,当我更改某些内容时,我调用列表视图的适配器的 notifyDataSetChanged()API,但我只是得到一个 java.lang.UnsupportedOperationException。任何帮助谢谢!

4

1 回答 1

0

只需更新弹出窗口中列表视图的适配器。

private List<String> data = new ArrayList<String>();
private ArrayAdapter<String> adapter;
private Handler handler = new Handler();

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

    data.add("1");
    data.add("2");
    data.add("3");

    ListView listView = new ListView(this);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
    listView.setAdapter(adapter);

    final PopupWindow popupWindow = new PopupWindow(this);
    popupWindow.setFocusable(true);
    popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setContentView(listView);

    final Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            popupWindow.showAsDropDown(button);

            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    data.add(String.valueOf(data.size() + 1));
                    adapter.notifyDataSetChanged();
                }
            }, 1000);
        }
    });
}
于 2015-05-07T03:01:08.537 回答