我有三个标签。第一个选项卡显示从搜索框搜索的互联网图像,其他两个选项卡显示随机图像。问题是,当我第一次打开任何标签时,图像被正确加载,但是当我移动到下一个标签时,前一个标签的图像显示在此选项卡中,然后所有标签显示相同的图像。 如何解决这个问题?
这是我的主要活动
ViewPager viewPager;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewPager);
setUpViewPager(viewPager);
viewPager.setOffscreenPageLimit(2);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
}
private void setUpViewPager(ViewPager viewPager){
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragment(new SearchFragment(), "SEARCH");
viewPagerAdapter.addFragment(new RandomFragment(), "RANDOM");
viewPagerAdapter.addFragment(new DailyFragment(), "DAILY");
viewPager.setAdapter(viewPagerAdapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter{
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> titleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager){
super(manager);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
public void addFragment(Fragment fragment, String title){
fragmentList.add(fragment);
titleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
}
这是第一个标签
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_search, container, false);
search_image = (EditText) view.findViewById(R.id.search_image);
searchButton = (Button) view.findViewById(R.id.search_button);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerViewSearch);
layoutManager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setVisibility(View.INVISIBLE);
mProgressBar = (ProgressBar) view.findViewById(R.id.loadingIndicator);
updateView();
return view;
}
public void updateView(){
mProgressBar.setIndeterminateDrawable(new ChromeFloatingCirclesDrawable
.Builder(getContext())
.build());
mProgressBar.setVisibility(View.INVISIBLE);
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mProgressBar.setVisibility(View.VISIBLE);
WallpaperInterface wallpaperInterface = Client.getClient().create(WallpaperInterface.class);
Call<WallpaperDetails> wallpaperDetailsCall = wallpaperInterface.getImages(API_KEY, search_image.getText().toString());
wallpaperDetailsCall.enqueue(new Callback<WallpaperDetails>() {
@Override
public void onResponse(Call<WallpaperDetails> call, Response<WallpaperDetails> response) {
List<Wallpapers> wallpapersList = response.body().getHits();
recyclerView.setAdapter(new WallpaperAdapter(wallpapersList, getContext()));
mProgressBar.setVisibility(View.INVISIBLE);
recyclerView.setVisibility(View.VISIBLE);
}
@Override
public void onFailure(Call<WallpaperDetails> call, Throwable t) {
Log.e("Error: ", t.toString());
}
});
}
});
}
这是第二个标签
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_random, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerViewRandom);
layoutManager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setVisibility(View.INVISIBLE);
mProgressBar = (ProgressBar) view.findViewById(R.id.loadingIndicator);
updateView();
return view;
}
public void updateView(){
mProgressBar.setIndeterminateDrawable(new ChromeFloatingCirclesDrawable
.Builder(getContext())
.build());
WallpaperInterface wallpaperInterface = Client.getClient().create(WallpaperInterface.class);
Call<WallpaperDetails> wallpaperDetailsCall = wallpaperInterface.getImages(API_KEY, "wallpapers");
wallpaperDetailsCall.enqueue(new Callback<WallpaperDetails>() {
@Override
public void onResponse(Call<WallpaperDetails> call, Response<WallpaperDetails> response) {
List<Wallpapers> wallpapersList = response.body().getHits();
recyclerView.setAdapter(new WallpaperAdapter(wallpapersList, getContext()));
mProgressBar.setVisibility(View.INVISIBLE);
recyclerView.setVisibility(View.VISIBLE);
}
@Override
public void onFailure(Call<WallpaperDetails> call, Throwable t) {
Log.e("Error: ", t.toString());
}
});
}
这是第三个标签
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_daily, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerViewDaily);
layoutManager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setVisibility(View.INVISIBLE);
mProgressBar = (ProgressBar) view.findViewById(R.id.loadingIndicator);
updateView();
return view;
}
public void updateView(){
mProgressBar.setIndeterminateDrawable(new ChromeFloatingCirclesDrawable
.Builder(getContext())
.build());
WallpaperInterface wallpaperInterface = Client.getClient().create(WallpaperInterface.class);
Call<WallpaperDetails> wallpaperDetailsCall = wallpaperInterface.getImages(API_KEY, "daily");
wallpaperDetailsCall.enqueue(new Callback<WallpaperDetails>() {
@Override
public void onResponse(Call<WallpaperDetails> call, Response<WallpaperDetails> response) {
List<Wallpapers> wallpapersList = response.body().getHits();
recyclerView.setAdapter(new WallpaperAdapter(wallpapersList, getContext()));
mProgressBar.setVisibility(View.INVISIBLE);
recyclerView.setVisibility(View.VISIBLE);
}
@Override
public void onFailure(Call<WallpaperDetails> call, Throwable t) {
Log.e("Error: ", t.toString());
}
});
}
请帮忙。 提前谢谢!