用fragment+recyclerview实现简易的微信跳转
部分代码已放在码云
https://gitee.com/kadd/android/tree/master/recyclerview
1.网格的实现
tab_chat.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_chat"
android:layout_width="match_parent"
android:layout_height="match_parent" />
item_grid.xml
这里因为是网格布局,所以使用GridLayout布局,为了达到上图的间隔效果可使用android:layout_margin=“xxdp”,也可以使用addItemDecoration()
<TextView
android:id="@+id/grid_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0"
android:text="TextView" />
<TextView
android:id="@+id/grid_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_column="1"
android:text="TextView" />
grid_adapter.java
这个可参考官方文档来编写:https://developer.android.google.cn/guide/topics/ui/layout/recyclerview#java
public class grid_adapter extends RecyclerView.Adapter<grid_adapter.GridViewHolder> {
private List<String> mList=new ArrayList<>();
public grid_adapter(List<String> list){
mList=list;
notifyDataSetChanged();
}
@NonNull
@Override
public grid_adapter.GridViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid,parent,false);
return new grid_adapter.GridViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull grid_adapter.GridViewHolder holder, int position) {
holder.gridnum.setText(position+1+"");
holder.gridcontent.setText(mList.get(position));
}
@Override
public int getItemCount() {
return mList == null ? 0 : mList.size();
}
public class GridViewHolder extends RecyclerView.ViewHolder{
TextView gridnum,gridcontent;
public GridViewHolder(@NonNull View itemView) {
super(itemView);
gridnum=itemView.findViewById(R.id.grid_num);
gridcontent=itemView.findViewById(R.id.grid_content);
}
}
}
wechatFragment.java
这个也可以参考官方文档来编写,但唯一比较难的点是,view,在oncreatview的方法里view的定义一定要先于数据的初始化和对于recyclerview的绑定,也就是要先于initdata()和initview()
public class wechatFragment extends Fragment {
private List<String> mList=new ArrayList<&