ViewPager에서 탭 변경시 콘텐츠가 업데이트되지 않음-Tablayout

Bhumik kewlani

arraylist의 동적 ID를 동적으로 생성 된 각 탭에 저장하고 있습니다.

ViewPagerOnTabSelectedListener를 사용했으며 클릭 한 탭의 ID를 가져 와서 sharedpreference에 저장합니다.

sharedpreference의 해당 ID를 조각으로 사용하여 해당 ID를 기반으로 각 탭에서 사용자 정의 목록을 가져옵니다.

아니요, 문제는 사용자 정의 목록이 탭 클릭시 새로 고쳐지지 않지만 이미 이전 값을 가져 왔으며 sharedpreference의 ID에 따라 업데이트되지 않는다는 것입니다.

public class ScrollableTabsActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    ConnectionClass connectionClass;
    ArrayList<String> al,idal,pidal;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrollable_tabs);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);


        viewPager = (ViewPager) findViewById(R.id.viewpager);
        tabLayout = (TabLayout) findViewById(R.id.tabs);


        connectionClass = new ConnectionClass();


        al = new ArrayList<String>();
        idal = new ArrayList<String>();
        pidal = new ArrayList<String>();


        ScrollableTabsActivity.DoLogin doLogin = new ScrollableTabsActivity.DoLogin();
        doLogin.execute("");


    }

    private void setupTags() {
        int i;



        for(i=0;i<al.size();i++) {
          /*  Tag t= new Tag();
            t.setId(idal.get(i));
            tabLayout.getTabAt(i).setTag(t);
*/

            tabLayout.getTabAt(i).setTag(idal.get(i));

        }

        tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager){
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                super.onTabSelected(tab);

             //   CharSequence numTab = ((Tag)tab.getTag()).getId();
                CharSequence numTab = tab.getTag().toString();

                SharedPreferences preferences2 = getSharedPreferences("AUTHENTICATION_FILE_NAME2", Context.MODE_WORLD_WRITEABLE);
                SharedPreferences.Editor editor2 = preferences2.edit();

                editor2.putString("tabselected",numTab.toString());
                editor2.putString("Authentication_Status", "true");
                editor2.apply();



            }

        });
    }
    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        int i;
        for(i=0;i<al.size();i++){

        adapter.addFrag(new MainActivity(), al.get(i),idal.get(i));

        }
        viewPager.setAdapter(adapter);


    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();
        private final List<String> mFragmentId = new ArrayList<>();


        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {

                return mFragmentList.get(position);

        }

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

        }

        public void addFrag(Fragment fragment, String title,String id) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
            mFragmentId.add(id);

        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }

        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }

    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Take appropriate action for each action item click
        switch (item.getItemId()) {
            case R.id.action_cart:
                cart();
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

    /**
     * Launching new activity
     * */
    private void cart() {
        Intent i = new Intent(ScrollableTabsActivity.this, Cart.class);
        startActivity(i);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    @Override
    public void onBackPressed() {
        super.onBackPressed();
        Vibrator v = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
        v.vibrate(500);
        MainActivity m= new MainActivity();
        m.vacatelist();

    }

    public class DoLogin extends AsyncTask<String,String,String>
    {
        String z = "";
        Boolean isSuccess = false;


        @Override
        protected void onPreExecute() {

        }

        @Override
        protected void onPostExecute(String r) {

            if(isSuccess) {
                SharedPreferences preferences2 = getSharedPreferences("AUTHENTICATION_FILE_NAME2", Context.MODE_WORLD_WRITEABLE);
                SharedPreferences.Editor editor2 = preferences2.edit();

                editor2.putString("tabselected",idal.get(0).toString());
                editor2.putString("Authentication_Status", "true");
                editor2.apply();

                setupViewPager(viewPager);
                tabLayout.setupWithViewPager(viewPager);
                setupTags();

            }
            else {
                Toast.makeText(ScrollableTabsActivity.this,r, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        protected String doInBackground(String... params) {

            try {
                Connection con = connectionClass.CONN();
                if (con == null) {
                    z = "Error in connection with SQL server";
                } else {
                    String query = "SELECT ID,Category_ItemName,Pi_Category_ID FROM [dbo].[MainMenuDetail] where Pi_Category_ID=0 and Delete_category=0";
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(query);
                    while (rs.next())
                    {
                        idal.add(rs.getString("ID"));
                        al.add(rs.getString("Category_ItemName"));
                        pidal.add(rs.getString("Pi_Category_ID"));

                    }
                    z = "Successful";
                    isSuccess=true;
                }
            }
            catch (Exception ex)
            {
                isSuccess = false;
                z = "Exceptions";
            }

            return z;
        }

    }
}

public class MainActivity extends android.support.v4.app.Fragment {
	// Log tag

	private static final String TAG = MainActivity.class.getSimpleName();
	ConnectionClass connectionClass;
	// Movies json url
	String url="http://i.imgur.com/mQPXunb.png";
	private List<Movie> movieList = new ArrayList<Movie>();
	private ListView listView;
	private CustomListAdapter adapter;
	private List templist = new ArrayList();
	String image_url = "http://app.dartenogroup.com/admin/img/";
	String image_url2="";
	NetworkImageView img;
	String restid;
	Movie movie;
	String tabselected;


	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		return inflater.inflate(R.layout.activity_main, container, false);
	}
	@Override
	public void onViewCreated(View view,Bundle savedInstanceState){
		super.onViewCreated(view,savedInstanceState);

		SharedPreferences prfs = getActivity().getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
		restid = prfs.getString("restid", "");

		SharedPreferences prfs2 = getActivity().getSharedPreferences("AUTHENTICATION_FILE_NAME2", Context.MODE_PRIVATE);
		tabselected = prfs2.getString("tabselected", "");
		Toast.makeText(getActivity(), tabselected, Toast.LENGTH_SHORT).show();

		connectionClass = new ConnectionClass();
		listView = (ListView) view.findViewById(R.id.list);
		adapter = new CustomListAdapter(getActivity(), movieList);
		listView.setAdapter(adapter);

		img = (NetworkImageView) view.findViewById(R.id.thumbnail);

		// changing action bar color
		//getActionBar().setBackgroundDrawable(
		//	new ColorDrawable(Color.parseColor("#ffffff")));

		DoLogin  doLogin = new DoLogin();
		doLogin.execute("");


		listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
				Intent i2 = new Intent(getActivity(), ViewProduct.class);
				TextView tv=(TextView)view.findViewById(R.id.itemid);
				i2.putExtra("value",tv.getText().toString());
				startActivity(i2);
			}
		});

	}


	/**
	 * On selecting action bar icons
	 * */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Take appropriate action for each action item click
		switch (item.getItemId()) {
			case R.id.action_cart:
				cart();
				return true;

			default:
				return super.onOptionsItemSelected(item);
		}
	}

	/**
	 * Launching new activity
	 * */
	private void cart() {
		Intent i = new Intent(getActivity(), Cart.class);
		startActivity(i);
	}

	public class DoLogin extends AsyncTask<String,String,String>
	{
		String z = "";
		Boolean isSuccess = false;


		@Override
		protected void onPreExecute() {
			movieList.clear();
			templist.clear();
		}

		@Override
		protected void onPostExecute(String r) {


			if(isSuccess) {

				updatelist();
				Vibrator v = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
				v.vibrate(500);
			}
			else{
				Toast.makeText(getActivity(),z,Toast.LENGTH_SHORT).show();
			}
		}


		@Override
		protected String doInBackground(String... params) {

				try {
					Connection con = connectionClass.CONN ();
					if (con == null) {
						z = "Error in connection with SQL server";
					} else {

						String query = "select * from [dbo].[MainMenuDetail] WHERE Delete_category = 0 AND Pi_Category_ID ='"+tabselected+"'" ;
						Statement stmt = con.createStatement();
						ResultSet rs = stmt.executeQuery(query);

						while (rs.next()) {

							movie = new Movie();
							movie.setId(rs.getString("ID"));
							movie.setItemname(rs.getString("Category_ItemName"));
							movie.setDescription(rs.getString("Category_SHortDesc"));
							movie.setPrice(rs.getString("Category_Price"));
							image_url2=rs.getString("show_Image");
							String img= image_url+image_url2;
							movie.setThumbnailUrl(img);
							update();
						}
						z = "Successful";
						isSuccess=true;
					}
				}
				catch (Exception ex)
				{
					isSuccess = false;
					z = "Exceptions";
				}

			return z;
		}
	}

	public void updatelist(){
		new Handler(Looper.getMainLooper()).post(new Runnable() {
			@Override
			public void run() {
				movieList.addAll(templist);
				adapter.notifyDataSetChanged();
			}
		});
	}
	public void refreshlist(){

		new Handler(Looper.getMainLooper()).post(new Runnable() {
			@Override
			public void run() {
				adapter.notifyDataSetChanged();
			}
		});	}

	public void vacatelist(){
		new Handler(Looper.getMainLooper()).post(new Runnable() {
			@Override
			public void run() {
				movieList.clear();
			}
		});
	}

	public void update(){
		templist.add(movie);
	}

}

snachmsm

당신은 이것을 시도 할 수 있습니다

@Override
public void onTabSelected(TabLayout.Tab tab) {
    CharSequence numTab = tab.getTag().toString();
    SharedPreferences preferences2 = getSharedPreferences("AUTHENTICATION_FILE_NAME2", Context.MODE_WORLD_WRITEABLE);
    SharedPreferences.Editor editor2 = preferences2.edit();

    editor2.putString("tabselected",numTab.toString());
    editor2.putString("Authentication_Status", "true");
    editor2.apply();

    // super called last
    super.onTabSelected(tab);
}

또는 ( 메서드 내부뿐만 아니라) ViewPagerAdapter adapter위에 "전역 적으로" 저장ScrollableTabsActivitysetupViewPager

ViewPagerAdapter adapter;

private void setupViewPager(ViewPager viewPager) {
    adapter = new ViewPagerAdapter(getSupportFragmentManager());
    //rest of your code
}

그리고

@Override
public void onTabSelected(TabLayout.Tab tab) {
    // your current code
    adapter.notifyDataSetChanged(); //ViewPagerAdapter's adapter
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

TabLayout 표시기가 탭 사이에 멈추고 콘텐츠가 사라짐

분류에서Dev

Android의 appcompat 탐색 탭에 조각 콘텐츠가 표시되지 않음

분류에서Dev

다음 탭에는 콘텐츠가 표시되지만 탭이 따라 오지 않습니다.

분류에서Dev

GWT TabLayoutPanel-> 탭 콘텐츠가 표시되지 않음

분류에서Dev

GWT TabLayoutPanel-> 탭 콘텐츠가 표시되지 않음

분류에서Dev

Android 탭 콘텐츠가 표시되지 않음

분류에서Dev

탭 콘텐츠가 표시되지 않음

분류에서Dev

TabBarView 콘텐츠가 setstate에서 업데이트되지 않음

분류에서Dev

SwiftUI 탭 선택이 해시 가능한 콘텐츠에서 작동하지 않음

분류에서Dev

부트 스트랩 탐색 탭의 콘텐츠가 표시되지 않음

분류에서Dev

ace.js 콘텐츠에 콘텐츠가 표시되지 않음

분류에서Dev

CSS 콘텐츠 이미지가 IE에 표시되지 않음

분류에서Dev

Firefox에 CSS 콘텐츠 이미지가 표시되지 않음

분류에서Dev

부트 스트랩 탭-탭을 클릭 할 때 콘텐츠가 표시되지 않음

분류에서Dev

Ionic 4 : IOS의 컨트롤러에서 변경할 때 "img"태그의 "src"콘텐츠가 업데이트되지 않음

분류에서Dev

콘텐츠가 추가되지 않음 \ QWidget에 표시됨

분류에서Dev

템플릿에 html 콘텐츠가 표시되지 않음

분류에서Dev

UITableViewCell에 콘텐츠가 표시되지 않음

분류에서Dev

CALayer 콘텐츠가 Swift2에 표시되지 않음

분류에서Dev

브라우저 시작 또는 탭 닫기 실행 취소시 탭 콘텐츠가로드되지 않음

분류에서Dev

브라우저 시작 또는 탭 닫기 실행 취소시 탭 콘텐츠가로드되지 않음

분류에서Dev

Fragment 내에서 TabLayout 사용 탭 텍스트가 보이지 않음

분류에서Dev

self.port.on을 사용할 때 firefox 콘텐츠 스크립트에서 변수가 업데이트되지 않음

분류에서Dev

경우에 따라 CSS 콘텐츠가 작동하지 않음

분류에서Dev

JQuery-ui : 높이 스타일 채우기가있는 탭, 크기 조정 가능한 패널에서 탭 콘텐츠 높이가 업데이트되지 않음

분류에서Dev

.csv 파일에서 읽은 콘텐츠가 페이지로드시 표시되지 않는 경우가 있음

분류에서Dev

선택적 매개 변수 변경시 React Router V4가 콘텐츠를 업데이트하지 않음

분류에서Dev

콘텐츠 변경시 가비지 수집되지 않는 SwingNode의 콘텐츠

분류에서Dev

콘텐츠 스크립트에서 콘텐츠 JavaScript가 실행되지 않음

Related 관련 기사

  1. 1

    TabLayout 표시기가 탭 사이에 멈추고 콘텐츠가 사라짐

  2. 2

    Android의 appcompat 탐색 탭에 조각 콘텐츠가 표시되지 않음

  3. 3

    다음 탭에는 콘텐츠가 표시되지만 탭이 따라 오지 않습니다.

  4. 4

    GWT TabLayoutPanel-> 탭 콘텐츠가 표시되지 않음

  5. 5

    GWT TabLayoutPanel-> 탭 콘텐츠가 표시되지 않음

  6. 6

    Android 탭 콘텐츠가 표시되지 않음

  7. 7

    탭 콘텐츠가 표시되지 않음

  8. 8

    TabBarView 콘텐츠가 setstate에서 업데이트되지 않음

  9. 9

    SwiftUI 탭 선택이 해시 가능한 콘텐츠에서 작동하지 않음

  10. 10

    부트 스트랩 탐색 탭의 콘텐츠가 표시되지 않음

  11. 11

    ace.js 콘텐츠에 콘텐츠가 표시되지 않음

  12. 12

    CSS 콘텐츠 이미지가 IE에 표시되지 않음

  13. 13

    Firefox에 CSS 콘텐츠 이미지가 표시되지 않음

  14. 14

    부트 스트랩 탭-탭을 클릭 할 때 콘텐츠가 표시되지 않음

  15. 15

    Ionic 4 : IOS의 컨트롤러에서 변경할 때 "img"태그의 "src"콘텐츠가 업데이트되지 않음

  16. 16

    콘텐츠가 추가되지 않음 \ QWidget에 표시됨

  17. 17

    템플릿에 html 콘텐츠가 표시되지 않음

  18. 18

    UITableViewCell에 콘텐츠가 표시되지 않음

  19. 19

    CALayer 콘텐츠가 Swift2에 표시되지 않음

  20. 20

    브라우저 시작 또는 탭 닫기 실행 취소시 탭 콘텐츠가로드되지 않음

  21. 21

    브라우저 시작 또는 탭 닫기 실행 취소시 탭 콘텐츠가로드되지 않음

  22. 22

    Fragment 내에서 TabLayout 사용 탭 텍스트가 보이지 않음

  23. 23

    self.port.on을 사용할 때 firefox 콘텐츠 스크립트에서 변수가 업데이트되지 않음

  24. 24

    경우에 따라 CSS 콘텐츠가 작동하지 않음

  25. 25

    JQuery-ui : 높이 스타일 채우기가있는 탭, 크기 조정 가능한 패널에서 탭 콘텐츠 높이가 업데이트되지 않음

  26. 26

    .csv 파일에서 읽은 콘텐츠가 페이지로드시 표시되지 않는 경우가 있음

  27. 27

    선택적 매개 변수 변경시 React Router V4가 콘텐츠를 업데이트하지 않음

  28. 28

    콘텐츠 변경시 가비지 수집되지 않는 SwingNode의 콘텐츠

  29. 29

    콘텐츠 스크립트에서 콘텐츠 JavaScript가 실행되지 않음

뜨겁다태그

보관