0

我必须像这样在 ViewHolder 中获取 EditText 中包含的文本:

@Override
            public void onClick(View v) {

                holder.editTextComment = (EditText) v
                        .findViewById(R.id.editTextComment);
                String comment = holder.editTextComment.getText()
                        .toString();
                // String comment = new String("lol");
                Calendar c = Calendar.getInstance();
                SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyy");
                SimpleDateFormat dt = new SimpleDateFormat("HH:mm");
                String formattedDate = df.format(c.getTime());
                String formattedTime = dt.format(c.getTime());

                if (!comment.equalsIgnoreCase("")) {
                    switch (v.getId()) {
                    case R.id.buttonPostComment:
                        addItem(comment, formattedDate, formattedTime, v,
                                holder);
                        break;
                    }
                }

但是当我尝试将edittext文本插入字符串时,我的程序崩溃了,为什么?

4

2 回答 2

2

尝试更改此行

holder.editTextComment = (EditText) v
                    .findViewById(R.id.editTextComment);

holder.editTextComment = (EditText) findViewById(R.id.editTextComment);

EditText不包含在Button您单击的v代表的内容中。如果你只给你充气layoutsetContentView()那么移除v应该可以。如果您使用 aninflater那么您将使用layout您充气的任何东西来代替v

你所拥有的是回报null,所以当你调用它时你holder.editTextComment会得到一个。NPEgetText()

于 2013-07-01T13:08:29.920 回答
1

您确定以下代码返回EditText?

(EditText) v.findViewById(R.id.editTextComment);

我的猜测是它只是设置holder.editTextComment为,因此在对其进行操作时null呈现 a 。NullPointerException.getText().toString()

于 2013-07-01T13:06:53.273 回答