【问题标题】:How to use RecyclerView in creating list in android? [duplicate]如何使用 RecyclerView 在 android 中创建列表? [复制]
【发布时间】:2017-07-02 11:49:04
【问题描述】:

我想使用 recyclerView 创建一个列表,请建议我如何在 android 中执行此操作?

 public class MainActivity extends AppCompatActivity {

        RecyclerView myRecyclerView;

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

            myRecyclerView = (RecyclerView)findViewById(R.id.my_recycler_view);

            LinearLayoutManager layoutManager = new LinearLayoutManager(this);
            myRecyclerView.setLayoutManager(layoutManager);

            myRecyclerView.setAdapter(new FriendListAdapter());

        }
    }

【问题讨论】:

标签: android android-studio android-recyclerview adapter android-viewholder


【解决方案1】:

XML:

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_test"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scrollbarStyle="outsideInset"
        android:scrollbars="vertical" />

JAVA类

    ArrayList<String>list_friend;
    RecyclerView rv_test = (RecyclerView) view.findViewById(R.id.rv_test);
    LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(YourActivity.this);
    rv_test.setLayoutManager(mLinearLayoutManager);
    rv_test.setHasFixedSize(true);
    rv_test.setItemAnimator(new DefaultItemAnimator());

    //Set Adapter

    FriendListAdapter mAdapter = new FriendListAdapter(list_friend);
    rv_test.setAdapter(mAdapter);

朋友列表适配器

    public class FriendListAdapter extends RecyclerView.Adapter<FriendList.ViewWrapper> {
        ArrayList<String>list_friend;
        public FriendList( ArrayList<String>list_friend) {
           this.list_friend=list_friend;
        }

        @Override
        public ViewWrapper onCreateViewHolder(ViewGroup viewGroup, int i) {
            // create a new view
            @SuppressLint("InflateParams") View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_friend, null);
            // create ViewHolder
            return new ViewWrapper(itemLayoutView);
        }

        @Override
        public void onBindViewHolder(final ViewWrapper viewWrapper, int position) {
            viewWrapper.getName().setText(list_friend.get(viewWrapper.getAdapterPosition()));
        }

        @Override
        public int getItemCount() {
            return list_friend.size();
        }

        class ViewWrapper extends RecyclerView.ViewHolder {
            final View base;
            TextView tv_name;

            public ViewWrapper(View itemView) {
                super(itemView);
                base = itemView;
            }

            TextView getName() {
                if (tv_name == null) {
                    tv_name = (TextView) base.findViewById(R.id.tv_name);
                }
                return (tv_name);
            }
        }
    }

【讨论】:

    【解决方案2】:

    XML 文件 -

    <android.support.v7.widget.RecyclerView
            android:id="@+id/recycle_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    

    在主要活动中:-

      myTagRecyclerView = (RecyclerView) view.findViewById(R.id.cardList);
      RecyclerView.LayoutManager mLayoutManager = newLinearLayoutManager(this);
       myTagRecyclerView.setLayoutManager(mLayoutManager);
       myTagRecyclerView.setItemAnimator(new DefaultItemAnimator());
    MyTagRecyclerViewAdapter adapterTagItemList = new MyTagRecyclerViewAdapter(this, dataList);
    myTagRecyclerView.setAdapter(adapterTagItemList);
    

    在适配器中:-

    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import com.tine.tine.R;
    
    import java.util.List;
    
    /**
     * Created by Nishchal on 2/14/2017.
     */
    public class TestRecycleView extends RecyclerView.Adapter<TestRecycleView.ViewHolder> {
        private final Context mContext;
        private List<TestModel> mTestModelList;
        private String TAG = TestRecycleView.class.getSimpleName();
        private OnItemClickListener onItemClickListener;
    
    
        public TestRecycleView(Context mContext, List<TestModel> mTestModelList) {
            this.mTestModelList = mTestModelList;
            this.mContext = mContext;
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent,
                                             int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.recyle_view_item, parent, false);
    
            ViewHolder viewHolder = new ViewHolder(view);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            TestModel mTestModel = mTestModelList.get(position);
            //TODO Fill in your logic for binding the view.
        }
    
        public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
            this.onItemClickListener = onItemClickListener;
        }
    
        @Override
        public int getItemCount() {
            if (mTestModelList == null) {
                return 0;
            }
            return mTestModelList.size();
        }
    
        public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    
            public final TextView venuename_txtview = null;
    
            public ViewHolder(View itemView) {
                super(itemView);
    //            venuename_txtview = (TextView) itemView.findViewById(R.id.text);
    
                itemView.setOnClickListener(this);
            }
    
            @Override
            public void onClick(View v) {
                try {
    
                    if (onItemClickListener != null) {
                        onItemClickListener.onItemClick(v, getAdapterPosition());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        public interface OnItemClickListener {
            public void onItemClick(View view, int position);
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      MyAdapter 适配器 = new MyAdapter(MainActivity.this,your list) recyclerview.setAdapter(适配器);

      然后创建一个适配器类

      public class MyAdapter extends RecyclerView.Adapter<MyAdapter.CustomViewHolder> implements View.OnClickListener {
      
          ArrayList<String> arr;
          Context mContext;
      
          public  MyAdapter(Context context, ArrayList<String> Arr,) {
              this.arr = arr;
              this.mContext = context;
      
          }
      
          @Override
          public int getItemCount() {
              // TODO Auto-generated method stub
              return (null != arr ? arr.size() : 0);
          }
      
          @Override
          public void onBindViewHolder(final CustomViewHolder arg0, final int position) {
      
      
          }
      
      
          @Override
          public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int arg1) {
              View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item, null);
              RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
              view.setLayoutParams(lp);
      
      
              CustomViewHolder viewHolder = new CustomViewHolder(view);
      
              return viewHolder;
      
          }
      
          @Override
          public void onClick(View v) {
      
      
      
          }
      
          public class CustomViewHolder extends RecyclerView.ViewHolder {
      
      
              public CustomViewHolder(View rowView) {
                  super(rowView);
      
      
              }
          }
      
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        • 2013-02-17
        相关资源
        最近更新 更多