对话框中自定义适配器在android系统 [英] Dialog in Custom Adapter in android

查看:312
本文介绍了对话框中自定义适配器在android系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个复选框和一个t​​extview.I希望当用户点击一行一个警报对话框弹出,用户输入data.I使用后在活动code和工作得很好一个自定义适配器:

I have one custom adapter that have one checkbox and one textview.I want when user clicked on one row one alert dialog pop up and user enter data.I use following code in activity and worked fine:

    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View layout = inflater.inflate(R.layout.floordialog,
            (ViewGroup) findViewById(R.id.floordialog));

    floornum = (EditText) layout.findViewById(R.id.floordialog_floornumber);
    unitnum = (EditText) layout.findViewById(R.id.floordialog_unitnumber);
    Button next = (Button) layout.findViewById(R.id.floordialog_next);
    Button cancel = (Button) layout.findViewById(R.id.floordialog_cancel);


    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("floors");
    builder.setView(layout);
    builder.setCancelable(false);
    builder.create();

    flooralert = builder.create();
    flooralert.show();

    next.setOnClickListener(this);
    cancel.setOnClickListener(this);

但我不能在MyCustomAdapter使用,因为我不延伸活动,怎么能解决我的问题?
这是我的CustomAdapter

but i cant use in MyCustomAdapter because i Dont extend activity, how can solve my problem? and this is my CustomAdapter

        public MyadapterForListFloor(Activity a, int textViewResourceId,
        ArrayList<Integer> Floornum) {
    super();
    unitdialog = new UnitDialog();
    this.entries = Floornum;
    this.activity = a;
}

@Override
public int getCount() {

    return entries.size();
}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    View v = convertView;

    if (v == null) {
        LayoutInflater vi = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.unitview, null);
        holder = new ViewHolder();
        holder.text = (TextView) v.findViewById(R.id.UnitTextview);
        holder.checked = (CheckBox) v.findViewById(R.id.unitCheckbox);

        v.setTag(holder);

        holder.checked.setTag(entries.get(position));
        holder.text.setTag(entries.get(position));

        holder.checked.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                ViewHolder obj = new ViewHolder();
                obj.checked = (CheckBox) v.findViewById(R.id.unitCheckbox);

                getid = (Integer) v.getTag();

                if (isChecked(getid))
                {
                    obj.checked.setChecked(true);
                    unitdialog.DialogForFloor();
                    Urban.selectedRow.add(getid);
                }
                else
                    Log.d("in else onclick", "**");
            }

            private boolean isChecked(int getid) {

                for (int i = 0 ; i< Urban.selectedRow.size() ; i++)
                {
                    if (Urban.selectedRow.get(i)== getid)
                        return false;
                }
                return true;
            }

        });
        holder.text.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                holder.checked.performClick();
            }
        });
    }
    else 
    {
        ((ViewHolder) v.getTag()).checked.setTag(entries.get(position));
        holder = (ViewHolder) v.getTag();

        getid = (Integer) holder.checked.getTag();

        Log.d("geti is", String.valueOf(getid));

        if (checkBoxRefresh(getid))
            holder.checked.setChecked(true);


        else
            holder.checked.setChecked(false);

    }

    final String str = String.valueOf(entries.get(position));
    if (str != null) {

        holder.text.setText(str);

    }

    return v;
}

private boolean checkBoxRefresh(int FloorNum) {
    Log.d("urban.selectedrow.size is", String.valueOf(Urban.selectedRow.size()));
    for (int i = 0 ; i < Urban.selectedRow.size() ; i++)
    {
        if (Urban.selectedRow.get(i) == FloorNum)
            return true;
    }
    return false;

}

static class ViewHolder {
    TextView text;
    CheckBox checked;

}

}

推荐答案

试试这个:

 LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

您已经通过你的语境 MyCustomAdapter

这篇关于对话框中自定义适配器在android系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆