android रिसाइक्लर पर Notifydatasetchange काम नहीं कर रहा है केंद्र चयन के साथ देखें क्षैतिज स्क्रॉलएव्यू?



android-layout android-recyclerview (1)

मुझे यकीन नहीं है कि मैं आपको ठीक से प्राप्त करता हूं लेकिन आप एक रीसाइक्ल्यूव्यू का डेटा बदलना चाहते हैं और अन्य रीसाइक्लुव के मूल्य को रीसेट करना चाहते हैं

रीसाइक्लर वीवीएससीक्रोलटॉओपॉशन (इंडेक्स_यूयूयूवाई_डब्ल्यूएनडीटीओ_एससीआरओएलओ) का उपयोग करने की कोशिश करें;

यदि आप डेटा का केंद्र पद प्राप्त करने के लिए चाहते हैं recyclerview.scrollToPosition (arraylist.size () / 2); सरणीसूची जिसमें आपका ड्रायनीय डाटा संग्रहीत किया जाता है

ऑटो स्क्रॉलिंग मुद्दा है और कोड का उपयोग करके कुछ विशिष्ट स्थिति में भी मुश्किल है।

मैं क्षैतिज स्क्रॉल और केंद्र चयन के साथ दो रिसाइक्लर दृश्य बना रहा हूं।

इसलिए मेरी समस्या, Notifydatasetchanged और रीसाइक्लर रीसेट करने की विधि का उपयोग कर रहा है 0 को पोस्ट करें और यह चयन रेंज स्क्रॉल कर रहा है क्योंकि यह गलत सूचकांक लौटा रहा है ...

जब मैं डेटा बदलने के बाद केंद्र चयन सूचक प्राप्त करना चाहता हूं मैं कुछ संपादनों के साथ इसे हासिल करने के लिए उदाहरण नीचे का प्रयोग कर रहा हूं।

स्क्रॉल करते समय रीसायकल दृश्य के दृश्यमान दृश्य प्राप्त करें

मुझे डेटा के परिवर्तन के साथ दूसरे पुनर्चक्रण दृश्य एडाप्टर को पहली पुनर्चक्रणदृश्य एडाप्टर की स्क्रॉल पर डेटा बदलने की आवश्यकता है I

लेकिन स्क्रॉलदृश्य ने स्थिति को पहली स्थिति में सेट किया, मैंने नोटिफाइटमरेन्ज चेंजेड (इंट, इंट) को सूचित किया IitemRangeInserted (int, int) विधियों ...

विस्तार विवरण: मैं प्रकार बदल रहा हूं और देखो स्क्रॉलएव्यू के मूल्य को रीसेट कर रहा हूं। मुझे नीचे स्क्रॉल वीव्यू की चुनी गई स्थिति को बदलना होगा। विशेष रूप से मैं डेटा बदलकर केंद्र की स्थिति प्राप्त नहीं कर सकता इसका मतलब यह है कि अगर मैं सूचकांक की तुलना में सूचक को अधिसूचना जारी कर रहा हूं जैसा कि यह है। रीसेट डेटा के बाद मुझे सामान्य एडॉप्टर की तरह काम करना पड़ता है

अग्रिम में धन्यवाद।

   public void getRecyclerview_Type() {

    final RecyclerView recyclerView_Type = (RecyclerView) findViewById(R.id.recycleView);
    if (recyclerView_Type != null) {
        recyclerView_Type.postDelayed(new Runnable() {
            @Override
            public void run() {
                setTypeValue();
            }
        }, 300);
        recyclerView_Type.postDelayed(new Runnable() {
            @Override
            public void run() {
                // recyclerView_Type.smoothScrollToPosition(Type_Adapter.getItemCount() - 1);
                setTypeValue();
            }
        }, 5000);
    }
    ViewTreeObserver treeObserver = recyclerView_Type.getViewTreeObserver();
    treeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

        @Override
        public boolean onPreDraw() {
            recyclerView_Type.getViewTreeObserver().removeOnPreDrawListener(this);
            finalWidthDate = recyclerView_Type.getMeasuredWidth();
            itemWidthDate = getResources().getDimension(R.dimen.item_dob_width_padding);
            paddingDate = (finalWidthDate - itemWidthDate) / 2;
            firstItemWidthDate = paddingDate;
            allPixelsDate = 0;

            final LinearLayoutManager dateLayoutManager = new LinearLayoutManager(getApplicationContext());
            dateLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
            recyclerView_Type.setLayoutManager(dateLayoutManager);
            recyclerView_Type.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                    super.onScrollStateChanged(recyclerView, newState);
                    synchronized (this) {
                        if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                            calculatePositionAndScroll_Type(recyclerView);
                        }
                    }
                }

                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    allPixelsDate += dx;
                }
            });
            if (mTypeBeanArrayList == null) {
                mTypeBeanArrayList = new ArrayList<>();
            }
            getMedicationType();
            Type_Adapter = new Medication_Type_RecyclerAdapter(Add_Reminder_medicationlook_Activity.this, mTypeBeanArrayList, (int) firstItemWidthDate);
            recyclerView_Type.setAdapter(Type_Adapter);
            Type_Adapter.setSelecteditem(Type_Adapter.getItemCount() - 1);
            return true;
        }
    });
}

private void getMedicationType() {

    for (int i = 0; i < mTypeBeanArrayList.size(); i++) {
        Medication_TypeBean medication_typeBean = mTypeBeanArrayList.get(i);


        Log.print("Image name :" +medication_typeBean.getType_image_name());
        if (i == 0 || i == (mTypeBeanArrayList.size() - 1)) {
            medication_typeBean.setType(VIEW_TYPE_PADDING);
        } else {
            medication_typeBean.setType(VIEW_TYPE_ITEM);
        }
        mTypeBeanArrayList.set(i, medication_typeBean);

    }
}

/ * यह सबसे अधिक महत्वपूर्ण है, यदि अपेक्षित पद रिक्ति <0 रिसाइकिलरदृश्य निकटतम वस्तु पर लौट जाएगा / /

private void calculatePositionAndScroll_Type(RecyclerView recyclerView) {
    int expectedPositionDate = Math.round((allPixelsDate + paddingDate - firstItemWidthDate) / itemWidthDate);

    if (expectedPositionDate == -1) {
        expectedPositionDate = 0;
    } else if (expectedPositionDate >= recyclerView.getAdapter().getItemCount() - 2) {
        expectedPositionDate--;
    }
    scrollListToPosition_Type(recyclerView, expectedPositionDate);

}

/* this if most important, if expectedPositionDate < 0 recyclerView will return to nearest item*/
private void scrollListToPosition_Type(RecyclerView recyclerView, int expectedPositionDate) {
    float targetScrollPosDate = expectedPositionDate * itemWidthDate + firstItemWidthDate - paddingDate;
    float missingPxDate = targetScrollPosDate - allPixelsDate;
    if (missingPxDate != 0) {
        recyclerView.smoothScrollBy((int) missingPxDate, 0);
    }
    setTypeValue();

}

private void setTypeValue() {
    int expectedPositionDateColor = Math.round((allPixelsDate + paddingDate - firstItemWidthDate) / itemWidthDate);
    int setColorDate = expectedPositionDateColor + 1;

    Type_Adapter.setSelecteditem(setColorDate);
    mTxt_type_name.setText(mTypeBeanArrayList.get(setColorDate).getMedication_type_name());

    mSELECTED_TYPE_ID = setColorDate;

    //NotifyLookChangetoType(setColorDate);
}

// टाइप एडाप्टर

 public class Medication_Type_RecyclerAdapter extends RecyclerView.Adapter<Medication_Type_RecyclerAdapter.ViewHolder> {

    private ArrayList<Medication_TypeBean> medication_typeBeanArrayList;
    private static final int VIEW_TYPE_PADDING = 1;
    private static final int VIEW_TYPE_ITEM = 2;
    private int paddingWidthDate = 0;
    private Context mContext;
    private int selectedItem = -1;

    public Medication_Type_RecyclerAdapter(Context context, ArrayList<Medication_TypeBean> dateData, int paddingWidthDate) {
        this.medication_typeBeanArrayList = dateData;
        this.paddingWidthDate = paddingWidthDate;
        this.mContext = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == VIEW_TYPE_ITEM) {
            final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_medication_type,
                    parent, false);
            return new ViewHolder(view);
        } else {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_medication_type,
                    parent, false);
            RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) view.getLayoutParams();
            layoutParams.width = paddingWidthDate;
            view.setLayoutParams(layoutParams);
            return new ViewHolder(view);
        }
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Medication_TypeBean medication_typeBean = mTypeBeanArrayList.get(position);
        if (getItemViewType(position) == VIEW_TYPE_ITEM) {
            // holder.mTxt_Type.setText(medication_typeBean.getMedication_type_name());
            //holder.mTxt_Type.setVisibility(View.VISIBLE);
            holder.mImg_medication.setVisibility(View.VISIBLE);
            int d = R.drawable.ic_type_pill;
            try {
                //Due to Offline requirements we do code like this get the images from our res folder

                if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_pill")) {
                    d = R.drawable.ic_type_pill;
                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_patch")) {
                    d = R.drawable.ic_type_patch;
                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_capsule")) {

                    d = R.drawable.ic_type_capsule;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_ring")) {

                    d = R.drawable.ic_type_ring;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_inhaler")) {

                    d = R.drawable.ic_type_inhaler;


                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_spray")) {

                    d = R.drawable.ic_type_spray;


                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_bottle")) {

                    d = R.drawable.ic_type_bottle;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_drop")) {

                    d = R.drawable.ic_type_drop;


                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_pessaries")) {

                    d = R.drawable.ic_type_pessaries;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_sachets")) {

                    d = R.drawable.ic_type_sachets;


                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_tube")) {

                    d = R.drawable.ic_type_tube;


                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_suppository")) {

                    d = R.drawable.ic_type_suppository;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_injaction")) {

                    d = R.drawable.ic_type_injaction;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_spoon")) {

                    d = R.drawable.ic_type_spoon;

                } else if (medication_typeBean.getType_image_name().equalsIgnoreCase("ic_type_powder")) {

                    d = R.drawable.ic_type_powder;

                } else {
                    d = R.drawable.ic_type_pill;
                }

                Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
                        d);
                holder.mImg_medication.setImageBitmap(icon);
            } catch (Exception e) {
                Log.print(e);
            }


            //     BitmapDrawable ob = new BitmapDrawable(mContext.getResources(), icon);
            //  img.setBackgroundDrawable(ob);
            // holder.mImg_medication.setBackground(ob);

            // Log.print("Type Adapter", "default " + position + ", selected " + selectedItem);
            if (position == selectedItem) {
                Log.print("Type adapter", "center" + position);
                //  holder.mTxt_Type.setTextColor(Color.parseColor("#76FF03"));
                //holder.mImg_medication.setColorFilter(Color.GREEN);
                //   holder.mTxt_Type.setTextSize(35);
                holder.mImg_medication.getLayoutParams().height = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) + 10;
                holder.mImg_medication.getLayoutParams().width = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) + 10;
            } else {
                holder.mImg_medication.getLayoutParams().height = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) - 10;
                holder.mImg_medication.getLayoutParams().width = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) - 10;
                //  holder.mTxt_Type.setTextColor(Color.WHITE);
                //holder.mImg_medication.setColorFilter(null);
                //  holder.mTxt_Type.setVisibility(View.INVISIBLE);
                // holder.mTxt_Type.setTextSize(18);
                //   holder.mImg_medication.getLayoutParams().height = 70;
                //   holder.mImg_medication.getLayoutParams().width = 70;
            }
        } else {
            holder.mImg_medication.getLayoutParams().height = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) - 10;
            holder.mImg_medication.getLayoutParams().width = (int) mContext.getResources().getDimension(R.dimen.item_dob_width) - 10;
            //  holder.mTxt_Type.setVisibility(View.INVISIBLE);
            holder.mImg_medication.setVisibility(View.INVISIBLE);
        }
    }

    public void setSelecteditem(int selecteditem) {
        this.selectedItem = selecteditem;
        notifyDataSetChanged();

        if (medication_lookBeanArrayList != null && Look_Adapter != null) {
            NotifyLookChangetoType(selecteditem);
        }
    }

    public int getSelecteditem() {
        return selectedItem;
    }

    @Override
    public int getItemCount() {
        return medication_typeBeanArrayList.size();
    }

    @Override
    public int getItemViewType(int position) {
        Medication_TypeBean medication_typeBean = medication_typeBeanArrayList.get(position);
        if (medication_typeBean.getType() == VIEW_TYPE_PADDING) {
            return VIEW_TYPE_PADDING;
        } else {
            return VIEW_TYPE_ITEM;
        }
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        //public TextView mTxt_Type;
        public ImageView mImg_medication;

        public ViewHolder(View itemView) {
            super(itemView);
            //  mTxt_Type = (TextView) itemView.findViewById(R.id.mTxt);
            mImg_medication = (ImageView) itemView.findViewById(R.id.mImg_medication);
        }
    }
}

//Type Adapter ends ************************************************





horizontalscrollview