gpt4 book ai didi

java - Android Studio 中的时间线过滤器

转载 作者:行者123 更新时间:2023-12-02 03:23:21 25 4
gpt4 key购买 nike

我正在 android studio 中创建一个 Twitter 时间线,我想放置一个过滤器以仅显示包含 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;
}
}

最佳答案

以下是您需要执行的步骤: 1. 获取推文列表 2. 通过检查推文是否包含 x 个单词来过滤列表 3.使用结果过滤列表

所以在这部分我添加了一个方法来根据 x 单词获取所需的推文列表

           `adapter.refresh(new Callback<TimelineResult<Tweet>>() {
@Override
public void success(Result<TimelineResult<Tweet>> result) {
TimelineResult<Tweet> filteredTweets = getFilteredListOfTweets(result.body(),"WordToFilterWith");
//on success response make refreshing false
swipeRefreshLayout.setRefreshing(false);
Toast.makeText(context, "Tweets actualizados.", Toast.LENGTH_SHORT).show();
}`

在 getFilteredListOfTweets 方法中:

public static TimelineResult<Tweet> getFilteredListOfTweets(TimelineResult<Tweet> timelineResult,String wordToFilter){


TimelineResult<Tweet> filteredTweets = new TimeLineResult<Tweet>();

for (int i=0;i<timelineResult.size();i++){
if (timelineResult.get(i).getText().contains(text)){
filteredTweets.add(timelineResult.get(i));
}
}

return filteredTweets;
}

关于java - Android Studio 中的时间线过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56917582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com