本文的目标是学会 RecyclerView 结合 CardView 的初步使用方法。
1.首先添加依赖项
在 build.gradle 文件的 dependencies 节点中添加一下代码:
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:cardview-v7:24.1.1'
2.设计布局
2.1 Layout_item 的布局
这是单个 Item 的 CardView 布局,内容只有一个 TextView 显示文本。
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardview"
android:layout_margin="8dp"
android:layout_height="80dp"
android:layout_width="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="text"
android:id="@+id/tv_item" />
</android.support.v7.widget.CardView>
2.2 主布局
主布局用于显示 RecyclerView。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="pub.cpp.demos.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</RelativeLayout>
3.添加适配器
package pub.cpp.demos;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* Created by xzh on 8/10/2016.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
String data[];
public MyAdapter(String[] data){
this.data=data;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.tv_viewHolder.setText(data[position]);
}
@Override
public int getItemCount() {
return data.length;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView tv_viewHolder;
public ViewHolder(View itemView) {
super(itemView);
tv_viewHolder= (TextView) itemView.findViewById(R.id.tv_item);
}
}
}
4.显示
设置 Activity 显示逻辑
package pub.cpp.demos;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] data={"11111111111111111111111111111111","122222222222222222222222221","23333333333333333333333332","34444444444444444444443","11555555555555555","1666666666666661","223452345234522","33","11","11","22","33","11","11","22","33"};
mRecyclerView= (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(new MyAdapter(data));
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
之后直接运行就可以看到运行效果了~
最后附上项目的 GitHub 链接:https://github.com/lixiang0/app/tree/master/Demos/app
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于