Android 8 (Oreo) getView () BaseAdapter не вызывается во второй раз - PullRequest
0 голосов
/ 07 сентября 2018

При повторном проектировании приложения для планшета для мобильного приложения я столкнулся с проблемой, когда метод GetView() моего базового адаптера вызывается не только на Android 8 (Oreo) , он нормально работает на нижние устройства.

Вот файл моего адаптера

Он вызывает getCount() и затем ничего не возвращает обратно

public class JSAEquipmentAdapter extends BaseAdapter {

    Context context;

    ArrayList<JSAEquipmentData> arrayJsaEquipmentData;
    MyHelper myHelper;

    public JSAEquipmentAdapter(Context context, ArrayList<JSAEquipmentData> arrayJSaEquipmentData){
        this.context = context;
        this.arrayJsaEquipmentData = arrayJSaEquipmentData;
        myHelper= MyHelper.getInstance(context);
    }

    @Override
    public int getCount() {
        return arrayJsaEquipmentData.size();
    }

    @Override
    public Object getItem(int position) {
        return arrayJsaEquipmentData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.row_jsa_equipment,null);

        final ViewHolder viewHolder = new ViewHolder();

        viewHolder.txtEquipmentName = (TextView) convertView.findViewById(R.id.txt_equipment_name);
        viewHolder.radioGroup = (RadioGroup) convertView.findViewById(R.id.radioGroup1);
        viewHolder.ivComment = (ImageView) convertView.findViewById(R.id.imgComment);
        viewHolder.edComment = (EditText) convertView.findViewById(R.id.edComment);
        viewHolder.edComment.setTag(position);
        viewHolder.edComment.addTextChangedListener(new CustomTextWatcher(viewHolder.edComment, AppConstants.JSA_EQUIPMENT_FRAGMENT));
        viewHolder.llReviews = (LinearLayout) convertView.findViewById(R.id.llReviews);

        viewHolder.txtEquipmentName.setText(arrayJsaEquipmentData.get(position).getEquipmentName());
        viewHolder.ivComment.setVisibility(View.VISIBLE);
        if (arrayJsaEquipmentData.get(position).getSelectedOption() != -1)
        {
            RadioButton radioBtn = (RadioButton) viewHolder.radioGroup.getChildAt(arrayJsaEquipmentData.get(position).getSelectedOption());
            radioBtn.setChecked(true);
        }
        if (arrayJsaEquipmentData.get(position).isCommentViewVisible()){
            viewHolder.edComment.setVisibility(View.VISIBLE);
            viewHolder.edComment.setText(arrayJsaEquipmentData.get(position).getComment());
        }

        viewHolder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                int radioButtonID = viewHolder.radioGroup.getCheckedRadioButtonId();
                View radioButton = viewHolder.radioGroup.findViewById(radioButtonID);
                int selectedIndex = viewHolder.radioGroup.indexOfChild(radioButton);

                arrayJsaEquipmentData.get(position).setSelectedOption(selectedIndex);

                if (selectedIndex == 1 || selectedIndex == 2)
                {
                    arrayJsaEquipmentData.get(position).setCommentViewVisible(true);
                    viewHolder.edComment.setVisibility(View.VISIBLE);
                    viewHolder.edComment.setText(arrayJsaEquipmentData.get(position).getComment());
                }
                else{
                    arrayJsaEquipmentData.get(position).setCommentViewVisible(false);
                    viewHolder.edComment.setVisibility(View.GONE);
                    myHelper.hideKeyBoard(viewHolder.edComment, AppConstants.KEYBOARD_TEXT);

                }


            }
        });

        viewHolder.ivComment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (viewHolder.edComment.getVisibility() == View.GONE) {
                    arrayJsaEquipmentData.get(position).setCommentViewVisible(true);
                    viewHolder.edComment.setVisibility(View.VISIBLE);
                    viewHolder.edComment.setText(arrayJsaEquipmentData.get(position).getComment());
                } else {
                    arrayJsaEquipmentData.get(position).setCommentViewVisible(false);
                    viewHolder.edComment.setVisibility(View.GONE);
                }
            }
        });

        viewHolder.edComment.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    arrayJsaEquipmentData.get(position).setComment(viewHolder.edComment.getText().toString());
                }
            }
        });

        return convertView;
    }

    class ViewHolder {
        TextView txtEquipmentName;
        RadioGroup radioGroup;
        ImageView ivComment;
        EditText edComment;
        LinearLayout llReviews;
    }
}

Вот мой бревенчатый кот

D/ViewRootImpl@6b52730[JobSafeyAnalysisActivity]: ViewPostIme pointer 0
D/ViewRootImpl@6b52730[JobSafeyAnalysisActivity]: ViewPostIme pointer 1
D/InputMethodManager: HSIFW - flag : 0 Pid : 14497
D/ViewRootImpl@6b52730[JobSafeyAnalysisActivity]: Relayout returned: old=[0,0][720,1280] new=[0,0][720,1280] result=0x1 surface={valid=true 3479638016} changed=false
D/ScrollView: initGoToTop
I/zygote: Compiler allocated 5MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
I/zygote: Do partial code cache collection, code=444KB, data=343KB
I/zygote: After code cache collection, code=444KB, data=343KB
 Increasing code cache capacity to 2MB
D/AbsListView:  in onLayout changed 
     in onLayout changed
D/ScrollView:  onsize change changed  
...