标签: android-recyclerview

当活动布局具有布局权重或 CardView 位于线性布局内时,RecyclerView smoothScrollToPosition 滚动到不正确的位置

当我打电话时,我遇到了意想不到的行为recyclerView.smoothScrollToPosition

当我添加足够的项目并开始离开屏幕时,它无法正确滚动到底部,停留在后面 2-3 处。然后,在添加 15 左右后,当我添加一个项目时,它开始滚动到位置 0,然后下一个项目滚动到底部。添加另一个项目,它会变为 0,然后再次添加,它会变为底部。

您可以在随附的视频中看到发生了什么。一旦滚动条开始离开屏幕,也要注意它。

imgur 上的 Gif,但仅限 15 秒。 http://i.imgur.com/FnjsTY1.gifv]

整个视频可在此处观看 - https://www.dropbox.com/s/k6aaca5ue6lkk21/device-2016-05-27-130928.mp4?dl=0

我把我的应用程序拆开,直到我将其范围缩小到两件事,突然解决了测试应用程序中的问题。

我的活动布局使用布局权重,当我删除它时,它再次开始正确滚动。另外,recyclerView 中显示的 CardView 周围有一个额外的 LinearLayout。删除它也可以解决问题。

这些解决方案在我的应用程序中都不起作用,因为可能存在更多像这两个这样的“陷阱”问题。这也是我将其分解到最小量以显示错误,我的布局要复杂得多。

我不知道该怎么办,因为我什至不完全确定为什么这是错误的。我尝试过使用自定义滚动条的自定义线性布局管理器,但总是遇到同样的问题。

下面是用于重现问题的代码

主要活动

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyFragment fragment = new MyFragment();
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, fragment).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

MyFragment 与 RecyclerView

public class MyFragment extends android.support.v4.app.Fragment {

    RecyclerView recyclerView;
    RecyclerAdapter adapter;
    ViewGroup rootView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-recyclerview

0
推荐指数
1
解决办法
3360
查看次数

带有 Searchview 过滤器的 Recyclerview 不起作用

我正在使用本教程添加本地搜索,以查找RecyclerView来自 Web 服务的数据。问题是当我搜索某些内容时,仅显示前两项。每当我搜索某些东西时,这种情况就会发生。无论我输入什么,都只显示前两项。但是当我清除SearchView总列表时,再次显示哪个是正确的。但为什么实际搜索没有过滤出正确的项目呢?

public class ProductsByCategoryActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {

    private RecyclerView recycler;
    private ProductsByCatAdapter adapter;
    private ArrayList<Model> arrayList = new ArrayList<Model>();
    private StaggeredGridLayoutManager gridmanager;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_productbycategory);

        searchview = (SearchView) findViewById(R.id.searchview);

        cd = new ConnectionDetector(ProductsByCategoryActivity.this);
        recycler = (RecyclerView) findViewById(R.id.recycler);
        adapter = new ProductsByCatAdapter(ProductsByCategoryActivity.this, arrayList);
        recycler.setHasFixedSize(true);
        gridmanager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        gridmanager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);
        recycler.setLayoutManager(gridmanager);
        recycler.setItemAnimator(null);
        recycler.setAdapter(adapter);

        searchview.setIconifiedByDefault(false);
        searchview.setOnQueryTextListener(this);
        searchview.setSubmitButtonEnabled(true);
        searchview.setQueryHint("Search Here");

        String URL = Utility.PRODBYEVERYTHING;
        prepareData(URL);
    }

    private void prepareData(final …
Run Code Online (Sandbox Code Playgroud)

android searchview android-recyclerview

0
推荐指数
1
解决办法
1416
查看次数

带有右下角圆形彩色徽章的圆形 ImageView

这是 RecyclerView 需要膨胀的布局类型。

在此输入图像描述

我使用 CircleImageView 库来实现圆形图像。(https://github.com/hdodenhof/CircleImageView

现在我的问题是,如何让另一个背景(实际上只是一种颜色)出现在它上面(就像上图中的蓝色部分)

这是迄今为止我所取得的成就。

在此输入图像描述

有什么建议么?

layout android imageview android-layout android-recyclerview

0
推荐指数
1
解决办法
2456
查看次数

在 Android 中点击 FloatingActionButton 时 RecyclerView 项目被点击

我的应用程序中有一个FloatingActionButtonover a RecyclerView。显示Button正常,但是当我单击它时,它RecyclerView下面的项目正在获取单击事件,而不是按钮。如果我将 设定RecyclerView为显示在 上FloatingActionButtonButton则按预期工作。

如何解决这个问题,并让其Button获取点击事件?

谢谢。

android onclicklistener floating-action-button android-recyclerview

0
推荐指数
1
解决办法
1001
查看次数

0
推荐指数
1
解决办法
4790
查看次数

RecyclerView未加载数据的原因

我尝试在 Android 中使用RecyclerView创建一个列表。但是,我不明白为什么 RecyclerView无法正确加载数据。我尝试将我的代码与在线可用的示例进行比较,但我无法分辨示例代码和我的代码之间有什么区别。

任何人都可以帮助指出我的代码缺少什么或有什么问题吗?

活动主文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="daozui.assignment3_task3.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/RecyclerView"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>    
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

contact_arrangement.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/contactIcon_ID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/man"
        android:layout_margin="10dp"/>

    <TextView
        android:id="@+id/contactName_ID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textSize="30sp"
        android:text="Name"
        android:layout_toEndOf="@id/contactIcon_ID"
        android:layout_marginTop="25dp"
        android:layout_marginStart="25dp"/>

    <TextView
        android:id="@+id/contactRelationship_ID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFBEB9B9"
        android:textSize="20sp"
        android:text="Relationship"
        android:layout_alignStart="@id/contactName_ID"
        android:layout_below="@id/contactName_ID"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.Java

package daozui.assignment3_task3;

import android.app.ListFragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List; …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-recyclerview

0
推荐指数
1
解决办法
1976
查看次数

从recycleVIew中删除项目的动画

我有RecyclerViewItemTouchHelperItemTouchHelper.Callback实例可以一起工作,并且在向左滑动时应删除应删除的所选项目(通过本教程)。移除动画有效,但只是部分有效。首先,在滑动后,该项目似乎被删除,但之后它又重新出现,并且列表保持不变:

在此输入图像描述

为什么会发生呢?

android android-animation android-recyclerview

0
推荐指数
1
解决办法
4168
查看次数

删除行后更新 Recyclerview 列表

我已经尝试了该网站的大多数答案,但没有得到所需的结果。

我有 recyclerview,其中包含项目列表和每行中包含的按钮。单击该按钮时,我希望删除整行并自动更新列表。

这是我的适配器类代码:

public class CartAdapter extends RecyclerView.Adapter<CartViewHolder> {

private static final String TAG = CartAdapter.class.getSimpleName();

private final Context context;
private List<Cart> itemsList;
private String id;

public CartAdapter(Context context, List<Cart> itemsList) {
    this.context = context;
    this.itemsList = itemsList;
}

@Override
public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cart_items_layout, parent, false);
    return new CartViewHolder(view);
}

@Override
public void onBindViewHolder(final CartViewHolder viewholder, final int position) {
    final Cart cart = itemsList.get(position);
    id = cart.getProductId();

    AndroidNetworking.get(Constants.PRODUCT_DETAILS_ENDPOINT + id)
            .setTag("Get …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

0
推荐指数
1
解决办法
4787
查看次数

我可以让我的回收器视图根据屏幕尺寸进行响应吗?

这是我的代码,每行显示 2 个项目。

extends Fragment {

private RecyclerView recyclerView;
private AlbumsAdapter adapter;
private List<Album> albumList;
protected View view;
private FloatingActionButton fab;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_ebooks, container, false);
    fab = (FloatingActionButton) view.findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), ProductsActivity.class);
            startActivity(intent);
        }
    });
    initCollapsingToolbar();

    recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);

    albumList = new ArrayList<>();
    adapter = new AlbumsAdapter(getActivity(), albumList);

    RecyclerView.LayoutManager …
Run Code Online (Sandbox Code Playgroud)

android android-screen-support android-recyclerview

0
推荐指数
1
解决办法
2837
查看次数

在自定义视图中获取 RecyclerView 方向

我正在尝试创建一个扩展的自定义视图RecyclerViewRecyclerView在我的自定义视图中,我根据方向(水平或垂直)要做一些事情。

不幸的是,我找不到任何方法来了解和获得RecyclerView方向。

甚至有可能做到吗?

我知道RecyclerView方向是在其定义的LayoutManager。也许无法获得这些LayoutManager信息?

预先感谢您提供的任何帮助。

java android android-custom-view android-recyclerview

0
推荐指数
1
解决办法
1999
查看次数