Я создаю временную шкалу Твиттера в Android Studio, и я хочу установить фильтр, чтобы показывать только твиты, содержащие слово x, но я знаю только, как удалить те из них, которые содержат слово x, и что я хочу, это обратное. Кто-нибудь знает как это сделать?
Я оставляю код, который я написал, для создания временной шкалы пользователя Twitter.
Привет и спасибо
v2 (редактировать)
У меня следующая проблема; метод "getFilteredListOfTweets" не позволяет мне фильтровать UserTimeLine, а .setTimeLine () не может быть "TimeLineResult".
public class UserTimelineFragment extends Fragment {
private Context context;
private RecyclerView userTimelineRecyclerView;
private SwipeRefreshLayout swipeRefreshLayout;
private TweetTimelineRecyclerViewAdapter adapter;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
public static UserTimelineFragment newInstance() {
Bundle args = new Bundle();
UserTimelineFragment fragment = new UserTimelineFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.user_timeline_fragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setUpSwipeRefreshLayout(view);
setUpRecyclerView(view);
loadUserTimeline();
}
private void setUpRecyclerView(@NonNull View view) {
userTimelineRecyclerView = view.findViewById(R.id.user_timeline_recycler_view);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
userTimelineRecyclerView.setLayoutManager(linearLayoutManager);
}
private void loadUserTimeline() {
UserTimeline userTimeline = new UserTimeline.Builder()
.screenName("playfulbet")
.includeReplies(false)
.includeRetweets(false)
.maxItemsPerRequest(10)
.build();
//now build adapter for recycler view
TimelineResult<Tweet> filteredTweets = getFilteredListOfTweets(userTimeline);
adapter = new TweetTimelineRecyclerViewAdapter.Builder(context)
.setTimeline(filteredTweets)
//action callback to listen when user like/unlike the tweet
.setOnActionCallback(new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
//do something on success response
}
@Override
public void failure(TwitterException exception) {
//do something on failure response
}
})
.build();
userTimelineRecyclerView.setAdapter(adapter);
}
private void setUpSwipeRefreshLayout(View view) {
swipeRefreshLayout = view.findViewById(R.id.user_swipe_refresh_layout);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (adapter == null)
return;
swipeRefreshLayout.setRefreshing(true);
adapter.refresh(new Callback<TimelineResult<Tweet>>() {
@Override
public void success(Result<TimelineResult<Tweet>> result) {
TimelineResult<Tweet> filteredTweets = getFilteredListOfTweets(result.data);
//on success response make refreshing false
swipeRefreshLayout.setRefreshing(false);
Toast.makeText(context, "Tweets actualizados.", Toast.LENGTH_SHORT).show();
}
@Override
public void failure(TwitterException exception) {
// Toast or some other action
Toast.makeText(context, "Error al actualizar los tweets.", Toast.LENGTH_SHORT).show();
}
});
}
});
}
private static TimelineResult<Tweet> getFilteredListOfTweets(TimelineResult<Tweet> timelineResult){
TimelineResult<Tweet> filteredTweets = new TimelineResult<>(null, Collections.<Tweet>emptyList());
for (int i=0;i<timelineResult.items.size();i++){
if (timelineResult.items.get(i).source.contains("cupón")){
filteredTweets.items.add(timelineResult.items.get(i));
}
}
return filteredTweets;
}
}