依赖
implementation ‘com.android.support:recyclerview-v7:28.0.0’
1.MainActivity
public class MainActivity extends AppCompatActivity {
List<Product.DataBean> list=new ArrayList<>();
String s = "http://www.zhaoapi.cn/product/getProducts?pscid=2";
//适配器及组件
RecycleAdapter adapter;
private RecyclerView recycle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//组件
recycle = (RecyclerView) findViewById(R.id.recycle);
//初始化适配器
adapter = new RecycleAdapter(this);
//调用适配器中的addItem方法填入数据
for (int i = 0; i < 6; i++) {
adapter.addItem("北京的第"+i+"天");
}
*//**
* 行向布局
*//*
// 设置管理
*/
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
// linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);//纵向
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);//横向
recycle.setLayoutManager(linearLayoutManager);*//*
*//**
* 纵向布局
* 第二个参数为列数
* 一行为三列
*//*
*/
/* GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
//设置管理
recycle.setLayoutManager(gridLayoutManager);
//设置适配器
// recycle.setAdapter(adapter);
}
}
2.RecycleAdapter
public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyHolder> {
//前面传递过来的上下文
Context context;
List<String> list = new ArrayList<>();
//构造
public RecycleAdapter(Context context ) {
this.context = context;
}
/**
* 这个方法是用来创建viewHolder的
* 就是引用xml传送的viewHolder的
*
* */
@NonNull
@Override
public RecycleAdapter.MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//加载返回
View view = LayoutInflater.from(context).inflate(R.layout.item_list,viewGroup,false);
MyHolder myHolder = new MyHolder(view);
return myHolder;
}
/**
* 第一个参数: 自定义ViewHolder
* 第二个参数: i 寻找位置
* 这个方法里面就是用来设置
* */
@Override
public void onBindViewHolder(@NonNull RecycleAdapter.MyHolder myHolder, final int i) {
//设置TextView
String s = list.get(i);
myHolder. tv.setText(s);
//点击条目
myHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "点击了第"+i+"条", Toast.LENGTH_SHORT).show();
}
});
//点击组件
myHolder.tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "点击了"+list.get(i), Toast.LENGTH_SHORT).show();
}
});
}
/**
*
* 获取list长度
* */
@Override
public int getItemCount() {
return list.size();
}
//MainActivity中的添加list集合的方法(按照个人习惯走,你也可以在Activity中添加足够的list)
//Activity中添加list之后,,传递参数时为上下文和list集合
//这个在继承适配器后是没有的.....
public void addItem(String s){
list.add(s);
}
/**
* 这个是自定义的ViewHolder继承的 RecyclerView.ViewHolder
*用来寻找组件
* */
class MyHolder extends RecyclerView.ViewHolder{
TextView tv ;
public MyHolder(@NonNull View itemView) {
super(itemView);
//添加组件就好
tv = itemView.findViewById(R.id.list_textView);
}
}
}
3主函数.布局
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
4.list_item布局
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/list_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>