我正在使用RecyclerView和GridLayoutManager,我将每个项目都作为CardView.
不幸的是,这里的CardView似乎没有改变它的背景颜色.我尝试了布局和编程方式,但我似乎没有尝试过什么似乎工作.
我一直在苦苦挣扎.如果有人可以帮我解决这个问题,我感激不尽.
我仍然试图了解Recyclerview.我有一个arraylist,我用它来初始化一个回收站视图.
如何在设置适配器和布局管理器的回收器视图中添加新项?
private void initData() {
mItems = new ArrayList<String>();
for (int i = 0; i < ITEMS_COUNT; i++) {
mItems.add("Item " + (i + 1));
}
}
private void initRecyclerView() {
mRecentRecyclerView = (RecyclerView) findViewById(R.id.recentrecyclerView);
mRecentRecyclerView.setHasFixedSize(true);
mRecentLayoutManager = new LinearLayoutManager(this);
mRecentRecyclerView.setLayoutManager(mRecentLayoutManager);
mAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.notice_snippet
, viewGroup, false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
viewHolder.noticeSubject.setText(mItems.get(i));
}
@Override
public int getItemCount() …Run Code Online (Sandbox Code Playgroud) 我有一个RecyclerView,它从API加载一些数据,包括一个图像URL和一些数据,我使用networkImageView来延迟加载图像.
@Override
public void onResponse(List<Item> response) {
mItems.clear();
for (Item item : response) {
mItems.add(item);
}
mAdapter.notifyDataSetChanged();
mSwipeRefreshLayout.setRefreshing(false);
}
Run Code Online (Sandbox Code Playgroud)
这是适配器的实现:
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
if (isHeader(position)) {
return;
}
// - get element from your dataset at this position
// - replace the contents of the view with that element
MyViewHolder holder = (MyViewHolder) viewHolder;
final Item item = mItems.get(position - 1); // Subtract 1 for header
holder.title.setText(item.getTitle());
holder.image.setImageUrl(item.getImg_url(), VolleyClient.getInstance(mCtx).getImageLoader());
holder.image.setErrorImageResId(android.R.drawable.ic_dialog_alert);
holder.origin.setText(item.getOrigin());
}
Run Code Online (Sandbox Code Playgroud)
问题是当我们在recyclerView中刷新时,它在开始时很短暂地看起来很奇怪.
我只使用了GridView/ListView,它按预期工作.没有瞎眼.
RecycleView的配置 …
使用新的GridLayoutManager:https://developer.android.com/reference/android/support/v7/widget/GridLayoutManager.html
它需要一个明确的跨度计数,所以问题现在变成:你怎么知道每行有多少"跨度"?毕竟这是一个网格.根据测量的宽度,RecyclerView可以容纳多个跨距.
使用旧的GridView,您只需设置"columnWidth"属性,它将自动检测适合的列数.这基本上是我想要为RecyclerView复制的:
RecyclerView这似乎是很常见的行为,所以有一种我没有看到的更简单的方法吗?
android android-gridlayout gridlayoutmanager android-recyclerview
在RecyclerView上,我可以使用以下命令突然滚动到所选项目的顶部:
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, 0);
Run Code Online (Sandbox Code Playgroud)
但是,这突然将项目移动到顶部位置.我想顺利地移动到项目的顶部.
我也尝试过:
recyclerView.smoothScrollToPosition(position);
Run Code Online (Sandbox Code Playgroud)
但它不能很好地工作,因为它不会将项目移动到选定的顶部位置.它只是滚动列表,直到位置上的项目可见.
我对Android的RecyclerView.State有疑问.
我正在使用RecyclerView,我如何使用它并将其与RecyclerView.State绑定?
我的目的是保存RecyclerView的滚动位置.
我正在尝试在最后一行添加Padding/Margin Bottom,在第一行添加Padding/Margin Top.我不能在项目xml中这样做,因为它会影响我的所有Childs.
我的RecyclerView适配器中有标题和子项,所以我无法使用
android:padding="4dp"
android:clipToPadding="false"
Run Code Online (Sandbox Code Playgroud)
我需要在每个标题的最后一行单独使用它
我RecyclerView内心有两个NavigationDrawer.两者都有蓝色滚动效果.
如何在两者中删除此效果RecyclerViews?
我尝试更改:mRecyclerView.setHasFixedSize(true);to false,但它删除了滚动效果.(这种方法的作用是什么?)
我正在尝试刷新特定项目RecyclerView.
故事:每当用户点击项目时,它都会显示AlertDialog.用户可以通过单击确定按钮键入一些文本.我想在这个项目中显示这个文本并显示不可见ImageView- 在XML和适配器中声明ViewHolder-
我在AlertDialogPositive Button中使用此函数来更新项目:
private void updateListItem(int position) {
View view = layoutManager.findViewByPosition(position);
ImageView medicineSelected = (ImageView) view.findViewById(R.id.medicine_selected);
medicineSelected.setVisibility(View.VISIBLE);
TextView orderQuantity = (TextView) view.findViewById(R.id.order_quantity);
orderQuantity.setVisibility(View.VISIBLE);
orderQuantity.setText(quantity + " packet added!");
medicinesArrayAdapter.notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码不仅改变了传递位置的itemView,还改变了其他一些itemView(s)!
如何通过单击更改特定的itemView?
android android-adapter recycler-adapter android-recyclerview