mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Crash fixed due to notifyDataSetChange
This commit is contained in:
parent
c93bcda6f6
commit
ecebe4c584
6 changed files with 120 additions and 4 deletions
|
|
@ -250,4 +250,24 @@ public class CategoryDetailsActivity extends NavigationBaseActivity
|
||||||
}
|
}
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called on success of API call for Images inside a category.
|
||||||
|
* The viewpager will notified that number of items have changed.
|
||||||
|
*/
|
||||||
|
public void viewPagerNotifyDataSetChanged() {
|
||||||
|
if (mediaDetails!=null){
|
||||||
|
mediaDetails.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called when viewPager has reached its end.
|
||||||
|
* Fetches more images using search query and adds it to the grid view and viewpager adapter
|
||||||
|
*/
|
||||||
|
public void requestMoreImages() {
|
||||||
|
if (categoryImagesListFragment!=null){
|
||||||
|
categoryImagesListFragment.fetchMoreImagesViewPager();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,16 @@ public class CategoryImagesActivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called on success of API call for featured Images.
|
||||||
|
* The viewpager will notified that number of items have changed.
|
||||||
|
*/
|
||||||
|
public void viewPagerNotifyDataSetChanged() {
|
||||||
|
if (mediaDetails!=null){
|
||||||
|
mediaDetails.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called on from getCount of MediaDetailPagerFragment
|
* This method is called on from getCount of MediaDetailPagerFragment
|
||||||
* The viewpager will contain same number of media items as that of media elements in adapter.
|
* The viewpager will contain same number of media items as that of media elements in adapter.
|
||||||
|
|
@ -236,4 +246,14 @@ public class CategoryImagesActivity
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called when viewPager has reached its end.
|
||||||
|
* Fetches more images using search query and adds it to the gridView and viewpager adapter
|
||||||
|
*/
|
||||||
|
public void requestMoreImages() {
|
||||||
|
if (categoryImagesListFragment!=null){
|
||||||
|
categoryImagesListFragment.fetchMoreImagesViewPager();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,20 @@ public class CategoryImagesListFragment extends DaggerFragment {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called when viewPager has reached its end.
|
||||||
|
* Fetches more images for the category and adds it to the grid view and viewpager adapter
|
||||||
|
*/
|
||||||
|
public void fetchMoreImagesViewPager(){
|
||||||
|
if (hasMoreImages && !isLoading) {
|
||||||
|
isLoading = true;
|
||||||
|
fetchMoreImages();
|
||||||
|
}
|
||||||
|
if (!hasMoreImages){
|
||||||
|
progressBar.setVisibility(GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches more images for the category and adds it to the grid view adapter
|
* Fetches more images for the category and adds it to the grid view adapter
|
||||||
*/
|
*/
|
||||||
|
|
@ -228,8 +242,17 @@ public class CategoryImagesListFragment extends DaggerFragment {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gridAdapter.addItems(collection);
|
gridAdapter.addItems(collection);
|
||||||
|
try {
|
||||||
|
((CategoryImagesActivity) getContext()).viewPagerNotifyDataSetChanged();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
((CategoryDetailsActivity) getContext()).viewPagerNotifyDataSetChanged();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
progressBar.setVisibility(GONE);
|
progressBar.setVisibility(GONE);
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
statusTextView.setVisibility(GONE);
|
statusTextView.setVisibility(GONE);
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ public class SearchActivity extends NavigationBaseActivity implements MediaDetai
|
||||||
private FragmentManager supportFragmentManager;
|
private FragmentManager supportFragmentManager;
|
||||||
private MediaDetailPagerFragment mediaDetails;
|
private MediaDetailPagerFragment mediaDetails;
|
||||||
ViewPagerAdapter viewPagerAdapter;
|
ViewPagerAdapter viewPagerAdapter;
|
||||||
|
private String query;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -104,6 +105,7 @@ public class SearchActivity extends NavigationBaseActivity implements MediaDetai
|
||||||
.debounce(500, TimeUnit.MILLISECONDS)
|
.debounce(500, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe( query -> {
|
.subscribe( query -> {
|
||||||
|
this.query = query.toString();
|
||||||
//update image list
|
//update image list
|
||||||
if (!TextUtils.isEmpty(query)) {
|
if (!TextUtils.isEmpty(query)) {
|
||||||
viewPager.setVisibility(View.VISIBLE);
|
viewPager.setVisibility(View.VISIBLE);
|
||||||
|
|
@ -145,7 +147,16 @@ public class SearchActivity extends NavigationBaseActivity implements MediaDetai
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void notifyDatasetChanged() {
|
public void notifyDatasetChanged() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called on success of API call for image Search.
|
||||||
|
* The viewpager will notified that number of items have changed.
|
||||||
|
*/
|
||||||
|
public void viewPagerNotifyDataSetChanged() {
|
||||||
|
if (mediaDetails!=null){
|
||||||
|
mediaDetails.notifyDataSetChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -245,4 +256,14 @@ public class SearchActivity extends NavigationBaseActivity implements MediaDetai
|
||||||
// https://stackoverflow.com/questions/6117967/how-to-remove-focus-without-setting-focus-to-another-control/15481511
|
// https://stackoverflow.com/questions/6117967/how-to-remove-focus-without-setting-focus-to-another-control/15481511
|
||||||
viewPager.requestFocus();
|
viewPager.requestFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called when viewPager has reached its end.
|
||||||
|
* Fetches more images using search query and adds it to the recycler view and viewpager adapter
|
||||||
|
*/
|
||||||
|
public void requestMoreImages() {
|
||||||
|
if (searchImageFragment!=null){
|
||||||
|
searchImageFragment.addImagesToList(query);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.pedrogomez.renderers.RVRendererAdapter;
|
import com.pedrogomez.renderers.RVRendererAdapter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
@ -160,6 +162,7 @@ public class SearchImageFragment extends CommonsDaggerSupportFragment {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
imagesAdapter.addAll(mediaList);
|
imagesAdapter.addAll(mediaList);
|
||||||
imagesAdapter.notifyDataSetChanged();
|
imagesAdapter.notifyDataSetChanged();
|
||||||
|
((SearchActivity)getContext()).viewPagerNotifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -179,6 +182,7 @@ public class SearchImageFragment extends CommonsDaggerSupportFragment {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
imagesAdapter.addAll(mediaList);
|
imagesAdapter.addAll(mediaList);
|
||||||
imagesAdapter.notifyDataSetChanged();
|
imagesAdapter.notifyDataSetChanged();
|
||||||
|
((SearchActivity)getContext()).viewPagerNotifyDataSetChanged();
|
||||||
|
|
||||||
// check if user is waiting for 5 seconds if yes then save search query to history.
|
// check if user is waiting for 5 seconds if yes then save search query to history.
|
||||||
Handler handler = new Handler();
|
Handler handler = new Handler();
|
||||||
|
|
@ -239,7 +243,7 @@ public class SearchImageFragment extends CommonsDaggerSupportFragment {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return new Media(imagesAdapter.getItem(i).getFilename());
|
return imagesAdapter.getItem(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,12 @@ import javax.inject.Named;
|
||||||
import fr.free.nrw.commons.Media;
|
import fr.free.nrw.commons.Media;
|
||||||
import fr.free.nrw.commons.R;
|
import fr.free.nrw.commons.R;
|
||||||
import fr.free.nrw.commons.auth.SessionManager;
|
import fr.free.nrw.commons.auth.SessionManager;
|
||||||
|
import fr.free.nrw.commons.category.CategoryDetailsActivity;
|
||||||
|
import fr.free.nrw.commons.category.CategoryImagesActivity;
|
||||||
import fr.free.nrw.commons.contributions.Contribution;
|
import fr.free.nrw.commons.contributions.Contribution;
|
||||||
import fr.free.nrw.commons.contributions.ContributionsActivity;
|
import fr.free.nrw.commons.contributions.ContributionsActivity;
|
||||||
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
||||||
|
import fr.free.nrw.commons.explore.SearchActivity;
|
||||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||||
import fr.free.nrw.commons.utils.ImageUtils;
|
import fr.free.nrw.commons.utils.ImageUtils;
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
@ -62,6 +65,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
ViewPager pager;
|
ViewPager pager;
|
||||||
private Boolean editable;
|
private Boolean editable;
|
||||||
private boolean isFeaturedImage;
|
private boolean isFeaturedImage;
|
||||||
|
MediaDetailAdapter adapter;
|
||||||
|
|
||||||
public MediaDetailPagerFragment() {
|
public MediaDetailPagerFragment() {
|
||||||
this(false, false);
|
this(false, false);
|
||||||
|
|
@ -81,7 +85,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
ButterKnife.bind(this,view);
|
ButterKnife.bind(this,view);
|
||||||
pager.addOnPageChangeListener(this);
|
pager.addOnPageChangeListener(this);
|
||||||
|
|
||||||
final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager());
|
adapter = new MediaDetailAdapter(getChildFragmentManager());
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
final int pageNumber = savedInstanceState.getInt("current-page");
|
final int pageNumber = savedInstanceState.getInt("current-page");
|
||||||
|
|
@ -269,11 +273,35 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
||||||
|
|
||||||
public void showImage(int i) {
|
public void showImage(int i) {
|
||||||
Handler handler = new Handler();
|
Handler handler = new Handler();
|
||||||
handler.postDelayed(() -> pager.setCurrentItem(i), 10);
|
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method notify the viewpager that number of items have changed.
|
||||||
|
*/
|
||||||
|
public void notifyDataSetChanged(){
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrolled(int i, float v, int i2) {
|
public void onPageScrolled(int i, float v, int i2) {
|
||||||
|
if (i+1 >= adapter.getCount()){
|
||||||
|
try{
|
||||||
|
((CategoryImagesActivity) getContext()).requestMoreImages();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
((CategoryDetailsActivity) getContext()).requestMoreImages();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
((SearchActivity) getContext()).requestMoreImages();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
getActivity().supportInvalidateOptionsMenu();
|
getActivity().supportInvalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue