如何在android中的baseadapter类中创建弹出窗口(已关闭)

时间:2016-01-02 10:22:42

标签: android listview popup baseadapter

在我的baseadapter类中有一个textview,当点击操作应用时,会出现一个弹出窗口,弹出窗口包含一个1-10的数字列表。  当我从列表中选择任何数字时,结果只会影响主列表的最后一行(为其创建适配器)。

我的问题是:弹出窗口在显示文本视图的地方打开,但我想在整个特定宽度和高度的屏幕上打开它。

这里有谁能解决这个问题? 提前致谢... 这是适配器类的代码

public class MyListAdapter extends BaseAdapter
{ 
public View getView(final int position, View v, ViewGroup parent) {

    if (inflater == null)
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (v == null) {
        v = inflater.inflate(R.layout.cart_list_item_row, null);

    count = (TextView) v.findViewById(R.id.count);
    count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                PopupWindow popUp = popupWindowshow(v);
                popUp.showAsDropDown(v, 0, 0);
            }
        });
    }
    return v;
}

private PopupWindow popupWindowshow(View v) {

    final PopupWindow popupWindow = new PopupWindow(activity);
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity, android.R.layout.simple_dropdown_item_1line,
            activity.getResources().getStringArray(R.array.item_arrays));
    final ListView countList = new ListView(activity);

    countList.setAdapter(adapter);

    // set on item selected
    countList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String data = (String) parent.getItemAtPosition(position);
            Toast.makeText(activity, data, Toast.LENGTH_LONG).show();

            count.setText(data);
            adapter.notifyDataSetChanged();
            popupWindow.dismiss();

        }
    });

    popupWindow.setFocusable(true);
    popupWindow.showAtLocation(v, Gravity.CENTER_VERTICAL, 0, 0);
    popupWindow.setWidth(250);
    popupWindow.setBackgroundDrawable(activity.getResources().getDrawable(R.color.white));
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

    // set the listview as popup content
    popupWindow.setContentView(countList);
    return popupWindow;
}

1 个答案:

答案 0 :(得分:0)

通过在基本适配器中弹出窗口的位置使用自定义对话框解决此问题,因为适配器项宽度和高度是弹出窗口的父高度,这就是窗口不是全屏的原因。 谢谢你给我时间。