1

单击我的自定义列表视图项时,我想打开一个自定义对话框()。

我试过了,但无法打开对话框。这是代码详细信息:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);

    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.input_dialog);
    dialog.setTitle("What about Today!");

           **//initialize custom dialog items.**
    EditText mood = (EditText) dialog.findViewById(R.id.editTextyourMode);
    Button btnSaveButton = (Button) dialog
            .findViewById(R.id.btnSaveMyMoods);
    Button btnClear = (Button) dialog
            .findViewById(R.id.btnClear);
    dialog.show();

}

这是自定义数组适配器 getView(...) 方法。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

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

View rowView = inflater.inflate(R.layout.sell_info_list, parent, false);


TextView product_id = (TextView) rowView.findViewById(R.id.product_id);//
product_id.setText(products.get(position).getProduct_id());

EditText product_quantity = (EditText) rowView
            .findViewById(R.id.editTextQuantity);

return rowView;
}

最后,我想在单击列表视图项编辑文本时打开此对话框。有人帮我吗?

4

5 回答 5

1

抱歉,我没有看到您使用的是 CustomAdapter,请在适配器中执行此操作

rowView.setClickable(true);
    rowView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View paramView)
                    {
                      //if you want you can use the "position" value to get the desired row items.
                    }
                    });
于 2012-09-13T06:57:54.347 回答
1

尝试:

// Click event for single list row
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
                EditText edit = (EditText) (findViewById(R.id.editText));
                if (edit != null) {
                    edit.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "CLICKED",
                                    Toast.LENGTH_LONG).show();
                        }
                    });
                } else {
                    Toast.makeText(MainActivity.this, "EditText not found",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
于 2012-09-13T07:09:12.047 回答
1

在您的编辑文本上设置一个 onclick 侦听器,如果它没有弹出任何对话框,请尝试设置您的 edittext android:focusable = "false" 的设置,也就是说,如果您已经在您的编辑文本上放置了一个侦听器,但仍然没有任何反应

于 2012-09-13T07:18:55.420 回答
1

我在适配器的 getView(...) 中打开从这些内部键入的对话框,并且还可以在选定的列表视图项 EditText 上显示。

    rowView.setClickable(true);
    rowView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            dialog = new Dialog(context);
            dialog.setContentView(R.layout.input_dialog);
            dialog.setTitle("What about Today!");

            final EditText txtMode = (EditText) dialog
                    .findViewById(R.id.editTextyourMode);
            Button btnSave = (Button) dialog
                    .findViewById(R.id.btnSaveMyMoods);

            btnSave.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    String data = txtMode.getText().toString();
                    product_quantity.setText(data);
                    dialog.dismiss();
                    Log.d("data", data);

                }
            });
            dialog.show();
        }
    });

然后屏幕看起来像这样。 在此处输入图像描述

现在面临一个问题。我的列表视图只有 10 个项目。当我滚动列表视图时,项目文本消失了,这是看不见的

感谢大家分享知识。**

于 2012-09-13T08:50:46.467 回答
0

在适配器中编写此代码

EditText product_quantity = (EditText) convertView
                .findViewById(R.id.editTextQuantity);
        product_quantity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.input_dialog);
                dialog.setTitle("What about Today!");

                //initialize custom dialog items.**
                EditText mood = (EditText) dialog.findViewById(R.id.editTextyourMode);
                Button btnSaveButton = (Button) dialog
                        .findViewById(R.id.btnSaveMyMoods);
                Button btnClear = (Button) dialog
                        .findViewById(R.id.btnClear);
                dialog.show();

            }
        });
于 2015-05-20T05:44:24.237 回答