myq_26 2013-06-06 05:12 采纳率: 16.7%
浏览 1275

ListView 中 Edit Text 的错误

我使用下面的代码在 list view 中显示edit boxes
现在每一个 ListView item 包含以下模式:

[EditText 1] [EditText 2] [EditText 3 ][EditText  4][EditText 5]



       class CustomArrayAdapterForScore extends ArrayAdapter<ScoreModel> 
        {
            public CustomArrayAdapterForScore() 
            {
                super(MeetScore.this, R.layout.score_event_layout, myScoreArray);
            }

            @Override
            public View getView(final int position, View convertView, ViewGroup parent) 
            {
                    View view = null;
                    LayoutInflater inflator = MeetScore.this.getLayoutInflater();
                    view = inflator.inflate(R.layout.score_event_layout, parent, false);
                    final ViewHolder viewHolder = new ViewHolder();

                    viewHolder.title = (TextView) view.findViewById(R.id.title);

                    viewHolder.box1 = (EditText) view.findViewById(R.id.box1);
                    viewHolder.box2 = (EditText) view.findViewById(R.id.box2);
                    viewHolder.box3 = (EditText) view.findViewById(R.id.box3);
                    viewHolder.box4 = (EditText) view.findViewById(R.id.box4);
                    viewHolder.box5 = (EditText) view.findViewById(R.id.box5);
                    viewHolder.box6 = (EditText) view.findViewById(R.id.box6);

                    viewHolder.box1.addTextChangedListener(new TextWatcher() 
                    {
                        public void onTextChanged(CharSequence c, int arg1, int arg2, int arg3) 
                        {
                            ScoreModel score = myScoreArray.get(position);
                            score.box1 = Integer.valueOf(viewHolder.box1.getText().toString());
                            myScoreArray.set(position, score);
                            listView.invalidateViews();
                        }
                        public void beforeTextChanged(CharSequence c, int arg1, int arg2, int arg3){} 
                        public void afterTextChanged(Editable arg0){} 
                    });

    view.tag(viewHolder);
return view;

当我改变Editbox 的文本时,点击它然后使用键盘输入。例如我输入9它显示9。 但是当键盘消失后,text
也不显示了。 edit text 显示空白区。
这是什么错误啊?

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-26 21:01
    关注

    看起来你的代码正在使用自定义 ArrayAdapter 和 ListView 来显示一组 EditText 元素。这些 EditText 元素是在 getView 方法中创建的,并在 TextWatcher 的 onTextChanged 方法中进行了更新。


    当键盘消失时,文本不会显示是因为没有将更新后的文本设置回 EditText 元素中。在 onTextChanged 方法中,你在 myScoreArray 中更新了 ScoreModel 对象的 box1 字段,但是并没有将更新后的文本设置回 EditText 元素中。


    要解决这个问题,你可以在 onTextChanged 方法的末尾添加一行代码来将新的文本设置回 EditText 元素中,例如:

    viewHolder.box1.setText(String.valueOf(score.box1));
    

    这样,每当文本更改时,就会将新文本设置回 EditText 元素中,从而解决了文本不显示的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B