- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Recyclerview 中使用分页。我在 RecyclerView.ViewHolder 中使用了两种布局。我想更改从另一个类单击按钮时的布局。
public class PollListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private List<PollList> pollLists;
RecyclerView mrecyclerView;
private int VIEW_TYPE_ITEM = 0;
private int VIEW_TYPE_LOADING = 1;
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView question, description, createdTime, closedTime;
public MyViewHolder(View view) {
super(view);
question = (TextView) view.findViewById(R.id.questionPoll);
description = (TextView) view.findViewById(R.id.descriptionPoll);
}
}
public static class LoadingViewHolder extends RecyclerView.ViewHolder {
public static ProgressBar progressBar;
public LoadingViewHolder(View itemView) {
super(itemView);
progressBar = (ProgressBar) itemView.findViewById(R.id.progressBar1);
}
}
public PollListAdapter(List<PollList> pollLists, RecyclerView recyclerView, Context con){
this.pollLists = pollLists;
this.mrecyclerView = recyclerView;
this.con = con;
mrecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
if (NewsFragment.nextPageURL != null) {
if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
if (mOnLoadMoreListener != null) {
mOnLoadMoreListener.onLoadMore();
}
isLoading = true;
}
}
}
});
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TYPE_ITEM) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.poll_row, parent, false);
return new MyViewHolder(itemView);
} else if (viewType == VIEW_TYPE_LOADING) {
View view = LayoutInflater.from(con).inflate(R.layout.layout_loading_item, parent, false);
return new LoadingViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof MyViewHolder) {
PollList poll_list = pollLists.get(position);
MyViewHolder viewHolder = (MyViewHolder) holder;
viewHolder.question.setText(poll_list.getTitle());
viewHolder.description.setText(poll_list.getDescription());
viewHolder.createdTime.setText(poll_list.getCreatedAt());
} else if (holder instanceof LoadingViewHolder){
LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder;
loadingViewHolder.progressBar.setIndeterminate(true);
}
}
@Override
public int getItemViewType(int position) {
return pollLists.get(position) == null ? VIEW_TYPE_LOADING : VIEW_TYPE_ITEM;
}
@Override
public int getItemCount() {
return pollLists == null ? 0 : pollLists.size();
}
public void setLoaded() {
isLoading = false;
}
public void setOnLoadMoreListener(OnLoadMoreListener mOnLoadMoreListener) {
this.mOnLoadMoreListener = mOnLoadMoreListener;
}
}
上面的适配器显示了多个布局 View 及其条件
按钮点击
这是按钮点击的代码
createGroupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
groupName.setText("");
groupStatus.clearCheck();
groupVisibility.clearCheck();
finish();
GroupFragment.groupvalues.clear();
GroupFragment.GroupData groupDataRefresh = new GroupFragment.GroupData();
groupDataRefresh.execute();
}
});
最佳答案
如果我没理解错的话,如果 List
元素为 null,您会显示加载。因此,要更改元素,只需更改该位置的 List
并更新 recyclerView
适配器。
在 Adapter 类中创建公共(public)方法
public void changeLoading(int position, PollList item){
pollLists.set(index, item);
notifyItemChanged(index);
}
在 OnClick
中调用此方法
createGroupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
groupName.setText("");
groupStatus.clearCheck();
groupVisibility.clearCheck();
finish();
GroupFragment.groupvalues.clear();
GroupFragment.GroupData groupDataRefresh = new GroupFragment.GroupData();
groupDataRefresh.execute();
adapter.changeLoading(itemPosition, item);
}
});
关于android - 如何在 Recyclerview.ViewHolder 的 OncreateViewHolder 中更改布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42061546/
这个问题在这里已经有了答案: RecyclerView onCreateViewHolder Return Type Incompatibility With Multiple Custom Vie
我的 fragment public class PostFragment extends BaseFragment implements PostView { @Inject PostPresent
我正在关注 this tutorial ,据此,当我启动我的应用程序时,我应该能够看到已添加到 Firestore 的项目(文档)。但这正在发生 onCreateViewHolder仅当我点击 tex
我有一个 RecylerView 适配器,我在其中处理 onCreateViewHolder 方法中的 onClicks,但是我无法找到获取当前位置的方法。我当前的方法如下所示: @Overr
我在 NestedScrollView 中有一个 RecyclerView,它显示一些异步下载的数据。问题是在初始化项目时存在明显的滞后。经过一些测试后,我发现问题是每个项目都会调用 onCreate
我正在使用支持库 v7 将我的 ListView 转换为 RecyclerView。 我有 2 个不同的布局要加载到 RecyclerView 中。在 ListView 中,我在 getView()
我的RecyclerView没有调用onCreateViewHolder,所以onBindViewHolder在recyclerview中不会出现什么。我放了调试日志,没有显示日志。可以是什么? 我的
我有一个根 recyclerview,每个项目都填充了这个布局: 如您所见,每个项目中都有另一个recyclerview。我想用headers实现分段recycler
Recyclerview 不调用任何适配器方法:onBindViewHolder、onCreateViewHolder 因此适配器为空 这是我的代码: public class PostsFragme
我有 PagedListAdapater: class TrackedActivityAdapter constructor(diffUtilCallback: DiffUtil.ItemCallba
我尝试调试我的程序,发现执行没有在 FirebaseRecyclerAdapter recyclerAdapter=new FirebaseRecyclerAdapter( 选项)。我已经尝试了 st
我关注了this Google Developer 的 YouTube channel 的教程,用于实现 AdMob 原生快捷广告。 我收到以下错误: required: packagename.ad
我有一个 RecyclerView 可以将项目显示为列表、小网格或大网格,这可以在运行时更改。根据用户选择的样式,我在 onCreateViewHolder 中展开不同的布局。 我还使用 layout
我正在使用 RecyclerView.Adapter,但我对它的方法 onCreateViewHolder 的工作有点困惑。 @Override public RecyclerView.ViewH
到目前为止,我认为当我使用 adapter = new RecyclerViewAdapter(this, list) 调用适配器的构造函数时,调用了 RecyclerView.Adapter 中的
我的自定义适配器中的 onCreateViewHolder 函数出现了一个奇怪的异常。可能是因为 getItemViewType 函数按预期返回不同的值。 这是 getItemViewType 函数的
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 这应该是一个一如既往的简单工作。
短篇小说:我有一个(预缓存)自定义 LinearLayoutManager、RecyclerView、自定义 RecyclerView.Adaptor、自定义 RecyclerView.ViewHol
这是我的代码,我不知道为什么它现在不起作用 songs 是一个包含 getter setter 的简单 java 类 在从 JSON 获取数据之前,我尝试在 recycleView 中静态添加数据,并
我正在尝试制作 RecyclerView,但遇到了这个奇怪的错误。 消息如下: android.view.InflateException: Binary XML file line #0: Atte
我是一名优秀的程序员,十分优秀!