Skip to content

Instantly share code, notes, and snippets.

@Marchuck
Created April 29, 2019 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Marchuck/c1c55038823cd122e5083f7fcb82fac4 to your computer and use it in GitHub Desktop.
Save Marchuck/c1c55038823cd122e5083f7fcb82fac4 to your computer and use it in GitHub Desktop.
Parser parser = new Parser();
parser.execute(UrlConstant.SECOND_FEED_URL);
parser.onFinish(new OnTaskCompleted() {
@Override
public void onTaskCompleted(@NotNull final List<Article> list) {
final List<Article> filtered = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Article article = list.get(i);
if (!TextUtils.isEmpty(article.getImage())) {
filtered.add(list.get(i));
}
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
secondFeedAdatper.setArticles(filtered);
}
});
}
@Override
public void onError(@NotNull Exception e) {
}
});
Handler handler = new Handler(Looper.getMainLooper());
FeedProvider feedProvider = new FeedProvider(new Parser(), handler);
void setupFeed(){
feedProvider.provideFeed(new FeedProvider.OnCompleteListener() {
@Override
public void onComplete(List<Article> articles) {
secondFeedAdatper.setArticles(articles);
}
},new FeedProvider.OnCompleteListener() {
@Override
public void onError(String message) {
//todo: show error message to the user
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
handler.removeCallbacksAndMessages(null);
}
public class FeedProvider {
public interface OnCompleteListener {
void onComplete(List<Article> articles);
}
public interface OnErrorListener {
void onError(String errorMessage);
}
private Parser parser;
private Handler handler;
public FeedProvider(Parser parser, Handler handler) {
this.parser = parser;
this.handler = handler;
}
void provideFeed(final OnCompleteListener completeListener,final OnErrorListener errorListener) {
parser.execute(UrlConstant.SECOND_FEED_URL);
parser.onFinish(new OnTaskCompleted() {
@Override
public void onTaskCompleted(@NotNull final List<Article> list) {
final List<Article> filtered = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Article article = list.get(i);
if (!TextUtils.isEmpty(article.getImage())) {
filtered.add(list.get(i));
}
}
handler.post(new Runnable() {
@Override
public void run() {
if (completeListener != null) {
completeListener.onComplete(filtered);
}
}
});
}
@Override
public void onError(@NotNull Exception e) {
handler.post(new Runnable() {
@Override
public void run() {
if(errorListener!=null){
errorListener.onError(e.getMessage());
}
}
});
}
void cancel() {
handler.removeCallbacksAndMessages(null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment