相关疑难解决方法(0)

如何使用多种视图类型创建RecyclerView?

来自https://developer.android.com/preview/material/ui-widgets.html

当我们创建时,RecyclerView.Adapter我们必须指定ViewHolder将与适配器绑定.

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private String[] mDataset;

    public MyAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public ViewHolder(TextView v) {
            super(v);
            mTextView = v;
        }
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.some_layout, parent, false);

        //findViewById...

        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mTextView.setText(mDataset[position]);
    }

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

user-interface android android-recyclerview

795
推荐指数
13
解决办法
39万
查看次数

RecyclerView onClick

有没有人使用RecyclerView找到一种方法来设置一个onClickListener项目RecyclerView?我想为每个项目的每个布局设置一个监听器,但这似乎有点太麻烦我确信有一种方法RecyclerView可以听取这个onClick事件,但我无法弄明白.

android onclick onclicklistener android-recyclerview

544
推荐指数
24
解决办法
54万
查看次数

我们应该使用RecyclerView来取代ListView吗?

Android文档说:

RecyclerView小部件是ListView的更高级和灵活的版本.此窗口小部件是一个容器,用于显示可以通过维护有限数量的视图而非常有效地滚动的大型数据集.如果数据集合的元素在运行时根据用户操作或网络事件而更改,请使用RecyclerView小部件

ListView如果效率无关紧要,实际上可以做到以上所有,我们在RecyclerView用来替换时发现了很多问题ListView:

  1. 列表项选择没有onItemClickListener() - 解决方案

  2. 列表项之间没有分隔符 - 解决方案

  3. 没有内置重叠选择器,当您单击列表项 - 解决方案时没有可视反馈

  4. 列表头没有addHeaderView - 解决方案

也许更多问题......

因此,当我们使用RecyclerView替换时ListView,我们必须做更多的额外编码才能达到相同的效果ListView.

题:

  • 是否值得我们更换ListViewRecyclerView完全?
  • 如果不是那么在这种情况下,我们应该更好地利用RecyclerView替代ListView,反之亦然?

android listview android-recyclerview

225
推荐指数
4
解决办法
7万
查看次数

Android Recyclerview与ListView一起使用Viewholder

我最近遇到了RecycleViewAndroid 5.0发布的android ,它似乎RecycleView只是一个封装的传统ListView,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建它.

使用的其他好处是RecycleView什么?如果两者在性能方面具有相同的效果,为什么会选择使用RecycleView`?

编辑

我发现人们提出了类似的问题并且答案没有定论,在这里添加它们以保存记录.

Recyclerview与Listview

我们应该使用RecyclerView来取代ListView吗?

为什么RecyclerView没有onItemClickListener()?和RecyclerView如何与Listview不同?

performance android listview android-recyclerview

142
推荐指数
3
解决办法
10万
查看次数

将recyclerview与数据库一起使用

目前没有可用的RecyclerView.Adapter的默认实现.

可能正式发布,谷歌将添加它.

由于不存在用于支持CursorAdapterRecyclerView当前,如何才能使用RecyclerView同一个数据库?有什么建议 ?

android simplecursoradapter android-recyclerview

126
推荐指数
3
解决办法
8万
查看次数

获取已点击的项目及其在RecyclerView中的位置

我正在替换我ListViewRecyclerView,列表显示确定,但我想知道如何获得点击项目及其位置,类似于OnItemClickListener.onItemClick(AdapterView parent, View v, int position, long id)我们使用的方法ListView.

谢谢你的想法!

android listview recycler-adapter android-recyclerview

94
推荐指数
6
解决办法
20万
查看次数

如何在RecyclerView中获取所选位置?

我正在试验支持库的recyclerview和卡片.我有回收卡的卡片.每张卡片的右上角都有一个"x"图标可将其删除:

该卡的xml, list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/taskDesc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:textSize="40sp"
        android:text="hi"/>
    <ImageView
        android:id="@+id/xImg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_remove"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

我试图用我会在使用的位置标记的行notifyItemRemoved(position)TaskAdapter.java:

public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.TaskViewHolder>  {

private List<Task> taskList;
private TaskAdapter thisAdapter = this;


// cache of views to reduce number of findViewById calls
public static class TaskViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    protected TextView taskTV;
    protected ImageView closeBtn;
    public TaskViewHolder(View v) {
        super(v); …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-cardview android-recyclerview

53
推荐指数
4
解决办法
14万
查看次数

findViewById vs ListView适配器中的View Holder Pattern

我总是使用LayoutInflaterfindViewById在一个getView方法中创建新项目Adapter.

但在许多文章中,人们写的findViewById非常慢,强烈建议使用View Holder Pattern.

谁能解释为什么findViewById这么慢?为什么View Holder Pattern更快?

如果需要添加不同的项目,我该怎么办ListView?我应该为每种类型创建类吗?

static class ViewHolderItem1 {
    TextView textViewItem;
}

static class ViewHolderItem2 {
    Button btnViewItem;
}
static class ViewHolderItem3 {
    Button btnViewItem;
    ImageView imgViewItem;
}
Run Code Online (Sandbox Code Playgroud)

android listview android-adapter

49
推荐指数
2
解决办法
3万
查看次数

Android RecyclerView:将布局文件LIST更改为GRID onOptionItemSelected

我正在开发一个在线购物的Android应用程序.我为使用产品列表创建了以下视图RecyclerView,因为我想在选择选项菜单项时更改视图:

我创建了以下适配器名称ProductAdapter,因为我已经实现了用于更改布局的代码,onCreateViewHolder用于根据布尔值选择布局文件.

适配器代码ProductAdapter:

    /***
     * ADAPTER for Product to binding rows in List
     */
    private class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductRowHolder> {

        private List<Product> productList;

        private Context mContext;

        public ProductAdapter(Context context, List<Product> feedItemList) {
            this.productList = feedItemList;
            this.mContext = context;
        }

        @Override
        public ProductRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View v = LayoutInflater.from(viewGroup.getContext()).inflate(isProductViewAsList ? R.layout.product_row_layout_list : R.layout.product_row_layout_grid, null);
            ProductRowHolder mh = new ProductRowHolder(v);
            return mh;
        }

        @Override
        public void onBindViewHolder(ProductRowHolder …
Run Code Online (Sandbox Code Playgroud)

android android-edittext android-recyclerview

34
推荐指数
3
解决办法
4万
查看次数

自定义ListView上的setOnItemClickListener

我有一个习惯ListView.这ListView包含1个图像和6个TextView.要检索我创建的值setOnItemClickListener(...).每当我点击我ListView怎样才能真正从6 TextView中检索所有数据?

android listview

24
推荐指数
3
解决办法
13万
查看次数