Androiddv
Androiddv

Reputation: 47

notifyDataSetChanged() with PagerAdapter in Android

I put the view pager in list view as row and want to update content of view pager when I scroll the list view . I have tried with =

 @Override
        public int getCount() {

            // return PAGE_NUM;
            Log.e("intCount8888: "," = " +intCount );
            notifyDataSetChanged();
            return intCount;

        }

and I have calling the notifyDataSetChange on list Adapter also in getView()

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        Holder holder = null;
        if (row == null)
        {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new Holder();
            holder.txt_Descid = (TextView) row.findViewById(R.id.textDescid);
            holder.txtTitle = (TextView) row.findViewById(R.id.txt_Desc);
            holder.txtInitialLetter = (TextView) row.findViewById(R.id.txt_InitialLetter);
            holder.txtRemark = (TextView) row.findViewById(R.id.textRemark);

            holder.imgBtn_Rework = (ImageView) row.findViewById(R.id.imgButtonRework);
            holder.imgBtn_FollowUp = (ImageView) row.findViewById(R.id.imgButtonFoloowUp);
            holder.imgBtn_RateEquipMent = (ImageView) row.findViewById(R.id.imgButtonRateEquipment);
            holder.imgBtn_Camera = (ImageView) row.findViewById(R.id.imgButtonCamera);
            holder.imgBtn_Audio = (ImageView) row.findViewById(R.id.imgButtonAudio);
            holder.imgBtn_FollowInspector = (ImageView) row.findViewById(R.id.imgButtonFollowInspector);

            holder.viewPager = (ViewPager) row.findViewById(R.id.Image_ViewPagers);

            holder.viewPager.setPageMargin(-50);
            holder.viewPager.setHorizontalFadingEdgeEnabled(true);
            holder.viewPager.setFadingEdgeLength(20);
            holder.viewPager.setClipToPadding(false);
            holder.viewPager.setPadding(-5, 0, 0, 0);
            MyPagerAdapter adapter = new MyPagerAdapter(getContext());

            holder.viewPager.setAdapter(adapter);
            holder.viewPager.setCurrentItem(0);
            adapter.notifyDataSetChanged();
            //holder.viewPager.getAdapter().notifyDataSetChanged();


            row.setTag(holder);
        } else {
            holder = (Holder) row.getTag();
        }

        All_Post all_Post = data.get(position);


        holder.txt_Descid.setText(Integer.toString(all_Post.getID()));
        String strTextDescId = holder.txt_Descid.getText().toString().trim();
        Log.e("strTextDescId ", " = " + strTextDescId);
        getActivityId(strTextDescId);
        getActivityObjectId_Count();

        holder.txtTitle.setText(all_Post.getName());
        String strTxtTitle = holder.txtTitle.getText().toString().trim();
        Log.e("strTxtTitle ", " = " + strTxtTitle);


        holder.txtInitialLetter.setText(all_Post.getInitName());
        holder.txtRemark.setText(all_Post.getStrDesc());

        holder.imgBtn_Rework.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("Button click ", "event is fire");

            }
        });

But getting error

08-07 05:56:27.806    4475-4475/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.StackOverflowError
            at java.lang.IntegralToString.convertInt(IntegralToString.java:209)
            at java.lang.IntegralToString.appendInt(IntegralToString.java:173)
            at java.lang.StringBuilder.append(StringBuilder.java:139)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:553)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPosts_Page.java:554)
            at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:882)
            at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2905)
            at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
            at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
            at com.example.tazeen.classnkk.AllPosts_Page$MyPagerAdapter.getCount(AllPost

Upvotes: 0

Views: 739

Answers (1)

Daedalus
Daedalus

Reputation: 265

Notifydatasetchange() is used to tell adapter to update its list, when the data has changed. You do not call it in getView() or in getCount(). You have to call notifyDataSetChanged(), if you have added or removed any list item from the list View.

getView() method will inflate the view when you scroll the lisview. And getCount() method just returns the number of list items that ListView contains.

Upvotes: 3

Related Questions