从ViewHolder Android中的EditText中获取文本

时间:2013-07-01 13:03:23

标签: android android-layout android-edittext android-view

我必须在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文本插入String时,我的程序崩溃了,为什么?

2 个答案:

答案 0 :(得分:2)

尝试更改此行

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

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

EditText未包含在您点击的Button内,v代表的是layout。如果您只使用setContentView()v进行充气,则应删除inflater。如果您使用的是layout,则可以使用v代替null充实的holder.editTextComment

您所拥有的内容正在为NPE返回getText(),因此当您致电{{1}}时,您将获得{{1}}。

答案 1 :(得分:1)

您确定以下代码会返回EditText吗?

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

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