Дубликат значения EditText в дочернем ExpandableListView - PullRequest
0 голосов
/ 22 сентября 2018

Когда я пишу что-то в EditText и открываю другую группу / ExpandableListView, случайный дочерний EditText имеет то же значение, которое я пишу в первом, пустое или 0, но 0 знает, что я из onFocusChange.Я хочу, чтобы все они начинались с 0 и не дублировались, когда я что-то пишу в EditText, если кто-то может мне помочь, я был бы благодарен.

Вот мой getChildView адаптера

Адаптер

@Override
        public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

            final ViewHolder holder;

            if (convertView == null) {

                LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(
                        Context.LAYOUT_INFLATER_SERVICE);
                convertView = layoutInflater.inflate(R.layout.questions_itens, null);

                holder = new ViewHolder();
                holder.editText = (EditText) convertView.findViewById(R.id.EditNumber);

                holder.editText.setText(editModelArrayList.get(childPosition).getEditTextValue());
                convertView.setTag(holder);
            }
            else {
                 holder = (ViewHolder)convertView.getTag();
            }


             final ViewHolder finalHolder = holder;
            holder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus)
                    {
                        if (!finalHolder.editText.getText().toString().equals(""))
                        {
                            editModelArrayList.get(childPosition).setEditTextValue("0");
                        }else {
                            editModelArrayList.get(childPosition).setEditTextValue("");
                        }
                    }

                }
            });

            holder.editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                    editModelArrayList.get(childPosition).setEditTextValue(holder.editText.getText().toString());



                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });


            TextView item = (TextView) convertView.findViewById(R.id.Item);


            Question question = (Question) getChild(groupPosition, childPosition);
            item.setText(question.getNome());

            return convertView;
        }

       private class ViewHolder {

            protected EditText editText;

        }
    }

1 Ответ

0 голосов
/ 23 сентября 2018

Я не мог исправить эту ошибку, но я знаю, что это потому, что когда я устанавливаю EditText, я использую только дочернюю позицию, так что все другие дочерние элементы с той же позицией получат одинаковое значение, поэтому я использовал два переключателя для проверки одногогрупповое положение e, отличное от дочернего положения.Я не знаю, есть ли лучший способ сделать это, так как я новичок в расширяемых и других вещах, но это сработало для меня.

Я использовал Switch как этот

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

          switch (groupPosition)
                    {

                        case 0:
                            switch (childPosition)
                            {
                                case 0:                                       
                                    break;

                                case 1:

                                    break;

                                case 2:
                                    break;
                            }
                            break;

                        case 1:
                            switch (childPosition)
                            {
                                case 0:
                                    break;

                                case 1:
                                    break;

                                case 2:
                                    break;

                                case 3:
                                    break;

                            }
                            break;

                        case 2:
                            switch (childPosition)
                            {
                                case 0:
                                    break;

                                case 1:
                                    break;

                                case 2:

                                    break;
                            }
                            break;

                        case 3:
                            switch (childPosition)
                            {
                                case 0:
                                    break;

                            }
                            break;

                        case 4:
                            switch (childPosition)
                            {
                                case 0:
                                    break;

                                case 1:
                                    break;

                            }
                            break;
                    }
}
...