public class BlogFeedAdapter extends RecyclerAdapter.BaseRecycleViewAdapter<BlogFeedVO, BlogFeedAdapter.ViewHolder> {
LayoutInflater mInflater;
int mDefaultProfileRes;
Activity mActivity;
public BlogFeedAdapter(Activity activity) {
super();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mDefaultProfileRes = R.drawable.ic_person;
} else {
mDefaultProfileRes = R.mipmap.ic_placeholder;
}
this.mActivity = activity;
}
@Override
protected ViewHolder createView(ViewGroup pareGroup, int viewType) {
if (mInflater == null) {
mInflater = LayoutInflater.from(pareGroup.getContext());
}
View view = mInflater.inflate(R.layout.blog_feed_item_layout, pareGroup, false);
ViewHolder holder = new ViewHolder(view);
holder.mContentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BlogFeedVO item = (BlogFeedVO) view.getTag();
Bundle data = new Bundle();
data.putParcelable(Constants.DATA, item);
AppModule.getmModule().dispatchEvent(new CoreEvent(Constants.BLOG_FEED_CLICKED_EVENT, data));
}
});
holder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BlogFeedVO feedVO = (BlogFeedVO) view.getTag();
feedVO.setmLikedInFeed(!feedVO.ismLiked());
notifyDataSetChanged();
Bundle data = new Bundle();
data.putParcelable(Constants.DATA, feedVO);
AppModule.getmModule().dispatchEvent(new CoreEvent(Constants.BLOG_FEED_LIKE_CLICKED_EVENT, data));
}
});
holder.mShareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = (String) view.getTag();
String url = CoreLib.getmPropertyReader().readProperty(Constants
.AppConfig.INSTANT_ARTICLE_BASE_URL) + id;
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(url))
.build();
ShareDialog shareDialog = new ShareDialog(mActivity);
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
}
});
return holder;
}
@Override
protected void updateView(ViewHolder viewHolder, final BlogFeedVO item) {
viewHolder.mTitle.setText(item.getmName());
ImageLoadUtils.loadWith(AppModule.getmModule(), item.getmImageUrl(), viewHolder.mImageView);
viewHolder.mTime.setText(item.getFormattedCreateAtTime());
viewHolder.mContentView.setTag(item);
ImageLoadUtils.loadWith(AppModule.getmModule(), item.getmAuthorVO().getmProfileImage(),
viewHolder.mProfileImage, mDefaultProfileRes, mDefaultProfileRes);
viewHolder.mAuthorName.setText(item.getmAuthorVO().getmName());
viewHolder.mLikeCount.setText(item.getmLikeCount()+"");
viewHolder.mViewCount.setText(item.getmViewCount()+"");
viewHolder.mLikeButton.setSelected(item.ismLiked());
viewHolder.mLikeButton.setTag(item);
viewHolder.mShareButton.setTag(item.getmId());
}
static class ViewHolder extends RecyclerAdapter.ViewHolder{
ImageView mImageView;
TextView mTitle;
TextView mTime;
View mContentView;
TextView mAuthorName;
CircleImageView mProfileImage;
TextView mViewCount;
TextView mLikeCount;
AppCompatImageView mLikeButton;
AppCompatImageView mShareButton;
/**
* Constructor function
*
* @param itemView the enclosing view
*/
public ViewHolder(View itemView) {
super(itemView);
mContentView = itemView.findViewById(R.id.content_view);
mImageView = itemView.findViewById(R.id.feed_imageview);
mTitle = itemView.findViewById(R.id.feed_title);
mTime = itemView.findViewById(R.id.time_text);
mAuthorName = itemView.findViewById(R.id.author_name);
mProfileImage = itemView.findViewById(R.id.profile_image);
mViewCount = itemView.findViewById(R.id.view_count);
mLikeCount = itemView.findViewById(R.id.like_count);
mLikeButton = itemView.findViewById(R.id.like_button);
mShareButton = itemView.findViewById(R.id.share_button);
}
}
}
This is the adapter class.
and this is in the activity extending adapter class
@Override
protected void onBindView() {
addViewEvents();
mAdapter = new BlogFeedAdapter(getActivity());
mView.setAdapter(mAdapter);// setting the recylerview list to the adapter.
}
现在我想要一个过滤后的recyler视图,即只有mAuthorName匹配某个字符串的那些项目。那我怎么能这样做呢。能否请你帮忙。谢谢,谢谢。 这里创建的列表显示了一些文章,我想列出特定作者发布的文章。 基本上我的问题是如何在某种条件下获得过滤后的recylerview。
答案 0 :(得分:0)
在适配器中添加新功能以更新列表
public void updateList(List<DataHolder> list){
displayedList = list;
notifyDataSetChanged();
}
void filter(String text){
List<DataHolder> temp = new ArrayList();
for(DataHolder d: displayedList){
//or use .equal(text) with you want equal match
//use .toLowerCase() for better matches
if(d.getEnglish().contains(text)){
temp.add(d);
}
}
//update recyclerview
disp_adapter.updateList(temp);
}
您可以应用此代码,其中&#34; text&#34;这是您想要过滤的艺术家姓名。
这是&#34; disp_adapter&#34;即回收适配器。
显示的列表是所有数据集的列表。