Articles of android recyclerview

使用RecyclerView GridLayoutManager通过ItemDecoration创建列间距时,项目的宽度不同

我正在尝试使用RecyclerView和GridLayoutManager来制作一个3列网格,我使用ItemDecoration来制作列间距,现在问题是第三列中项目的宽度小于第一列和第二列中的项目! 请参阅下面的屏幕截图。 如果我没有将自定义ItemDecoration添加到RecyclerView ,一切正常。 这是我的代码: MainActivity.java: public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private MyAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mAdapter = new MyAdapter(); mRecyclerView.setAdapter(mAdapter); GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); mRecyclerView.setLayoutManager(gridLayoutManager); int horizontalSpacing = 20; int verticalSpacing = 10; SpacingDecoration decoration = new SpacingDecoration(horizontalSpacing, […]

如何使用RecyclerView创建一个Horizo​​ntal CardView,一次只有一张卡在屏幕上

我是Android开发的新手。 我试图在屏幕上显示一张卡片列表,使用RecyclerView一次只能在屏幕上显示一张卡片。 但遗憾的是,我设计的卡片并未按预期填充整个屏幕宽度,如下图所示。 如何拉伸这些卡片以填充整个屏幕(宽度方面,高度是包装内容)。 有没有解决这个问题的方法? 我的代码: activity_sub.xml custom_card.xml SubActivity.java package ab9.mamv.com.playground; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; import java.util.List; public class SubActivity extends ActionBarActivity { Toolbar toolbar; private RecyclerView mRecyclerView; private SubActivityAdapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); […]

RecyclerView StaggeredGridLayoutManager重新排序问题

我试图在带有两列的StaggeredGridLayoutManager的RecyclerView显示三个(至少我遇到问题)。 第一项跨越两行。 这是它的样子: 现在,我将项目“项目2”移到顶部。 这是我在适配器中调用的代码(这是我编写的一个示例,用于演示我在一个更复杂的项目中遇到的问题): private int findById(int id) { for (int i = 0; i < items.size(); ++i) { if (items.get(i).title.equals("Item " + id)) { return i; } } return -1; } // Moving the item "Item 2" with id = 2 and position = 0 public void moveItem(int id, int position) { final […]

仅将RecyclerView中的视图动态添加到当前项目

我在RecyclerView动态地将视图添加到我的项目中。 这些添加的视图应该只与它们被添加到的项目相关,但是当我滚动时我遇到了问题。 似乎View被回收并加载了一个新项目,但之前添加的视图仍然存在,现在只有错误的项目。 我假设它只是因为ViewHolder被重用,所以添加的项目在加载时会再次出现一个新项目。 怎么会解决这个问题呢?

RecyclerView onClick notifyItemRemoved不会触发onBindView

我使用notifyItemRemoved()方法我想更改其他剩余项,但该方法不会触发onBindView()方法。 除了使用notifyDataSetChanged()之外,我该怎么做notifyDataSetChanged() 。 我想拥有notifyItemRemoved()方法附带的animation

将RecyclerView(RecyclerFragment)添加到对话框

我有自定义的RecyclerView来创建ListView。 当我尝试在我的布局id中填充列表视图时,它工作得很好。 FragmentTransaction ft = getFragmentManager().beginTransaction(); Bundle bundle = new Bundle(); bundle.putBoolean(“enablePullToRefresh”, false); GridValues gridValues = new GridValues(); gridValues.rowViewLayout = R.layout.my_detail_row_view; gridValues.delegate = this; mygrid = new CustomGridView(gridValues, bundle); mygrid.showAsGrid = true; mygrid.spanCount = 2; mygrid.layoutOrientation = LinearLayoutManager.VERTICAL; mygrid.noRowColor = true; mygrid.gridName = “mygrid”; mygrid.setArguments(mygrid.bundle); ft.replace(R.id.MyGridContainer, mygrid); 现在,我想在对话框中填充一个新列表。 我怎样才能做到这一点? 我试过这个,让mygrid成为静态的 public static class MyDialogFragment extends […]

RecyclerView不滚动并显示所有项目

我在ScrollView中有一个RecyclerView(以及其他一些视图)。 目前,RecyclerView的布局非常小(它显示了它包含的5个中的2个项目)并且它独立于ScrollView滚动,这显然不是很好的用户体验。 我想让RecyclerView不滚动和扩展,以便所有项目都可见。 (我知道在这种情况下使用RecyclerView是愚蠢的。我只是这样做,因为应用程序中的其他地方我需要一个普通的RecyclerView滚动等但是同样的内容,我不想重复代码)。

RecyclerView中的setLayoutManager NullPointException

我正在尝试在RecyclerView中接收带有数组的列表并收到错误: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.support.v7.widget.RecyclerView.setLayoutManager (android.support.v7.widget.RecyclerView$LayoutManager)’on a null object reference RecyclerView小部件 我试图将LayoutManager声明为final,但它没有帮助。 活动代码: public class MainActivity extends ActionBarActivity { private RecyclerView recyclerView; private Toolbar toolbar; private InfAdapter adapter; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main_appbar); recyclerView = (RecyclerView) findViewById(R.id.drawerList); recyclerView.setLayoutManager(new LinearLayoutManager(this)); InfAdapter mAdapter = new InfAdapter(this, getData()); […]

RecyclerView – 当视图不再可见时回调

我有一个带有Adapter和LayoutManager的RecyclerView。 适配器有大约15种不同的ViewHolders。 其中一个包含加载外部内容的WebView(其中99%是YouTube以外的video)。 当任何适配器视图离开屏幕时出现问题 – WebView中的video继续播放并且声音正在播放。 不过,这对我来说是可以接受的。 当我转移到另一个Activity时,关键问题就开始了。 video的声音仍然存在。 当任何子视图改变可见性状态(意味着从显示中消失)时,RecyclerView是否有任何方式可以通知我?

使用RecyclerView进行视差标题效果

我想更改我目前使用的ListView以使用RecyclerView因此我可以使用StaggeredGridLayoutManager但RecyclerView无法添加像ListView这样的标头。 通常使用ListView我在标题中设置一个空视图,并将图像放在列表视图下方,并通过滚动列表来转换底部图像以创建Parallax效果。 因此,如果没有标题,我如何使用RecyclerView创建相同的视差效果?