与复杂难用的 ListView 相比,RecyclerView 清晰的思路,简明的用法,强大的功能,无不预示着一个时代的过去,这里我主要讲讲 RecyclerView 基本使用
public class ColopediaAdapter extends RecyclerView.Adapter<ColopediaAdapter.ViewHolder>{
private List<Comment> mList ;
class ViewHolder extends RecyclerView.ViewHolder {
private ImageView authorIcon;
private TextView praiseNum;
private TextView authorName;
private TextView commontContent;
private ImageView touchGood;
public ViewHolder(@NonNull View itemView) {
super(itemView);
authorIcon = itemView.findViewById(R.id.comment_author_image);
authorName = itemView.findViewById(R.id.comment_author_name);
praiseNum = itemView.findViewById(R.id.comment_praise_nums);
commontContent = itemView.findViewById(R.id.comment_content);
touchGood = itemView.findViewById(R.id.touch_good);
}
}
public ColopediaAdapter(List<Comment> mList){
this.mList = mList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.clopedia_list_item_view, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
viewHolder.authorIcon.setImageResource(mList.get(i).getImageId());
viewHolder.authorName.setText(mList.get(i).getAuthorId());
viewHolder.commontContent.setText(mList.get(i).getCommentContent());
viewHolder.touchGood.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
}
不管是哪个配适器 首先要继承自 Recycler.Adapter ,然后都包含这几个基本要素:
ViewHolder | 新建一个 ViewHolder 类,用于绑定控件 |
---|---|
onCreateViewHolder | 绑定每个 item 的布局 |
onBindViewHolder | 实现每个控件的具体功能和点击事件 |
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clopedia_huashupihua);
iniViews();
iniList();
iniRecyclerView();
}
private void iniViews(){
mComment = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.colopedia_recycler);
commentSubmit = (TextView) findViewById(R.id.comment_submit);
editText = (EditText) findViewById(R.id.colopedia_comment_content);
commentSubmit.setOnClickListener(this);
}
private void iniRecyclerView(){
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
adapter = new ColopediaAdapter(mComment);
recyclerView.setAdapter(adapter);
}
private void iniList(){
mComment = MainActivity.comments;
}
可以看到,实现过程主要包括
List | 在一个 List 对象里,存放 item 的队列 |
---|---|
adapter | 根据 List 生成 Adapter |
LinearLayoutManager | 为 RecyclerView 配适管理器 |
String content = editText.getText().toString();
mComment.add(new Comment(R.drawable.baikepinglun_1_head, "小道夫",
content, 0));
MainActivity.comments = mComment;
adapter.notifyDataSetChanged();
public class Comment {
private int imageId; // 用户头像
private String authorId; // 用户名称
private String commentContent;// 评论内容
private int praiseNum; // 点赞数目
private boolean isPraised = false;//判断是否点赞
/*
构造方法
*/
public Comment(int imageId, String authorId, String commentContent, int praiseNum) {
this.imageId = imageId;
this.authorId = authorId;
this.commentContent = commentContent;
this.praiseNum = praiseNum;
}
/*
get() & set()
*/
public int getImageId() {
return imageId;
}
public void setImageId(int imageId) {
this.imageId = imageId;
}
public String getAuthorId() {
return authorId;
}
public void setAuthorId(String authorId) {
this.authorId = authorId;
}
public String getCommentContent() {
return commentContent;
}
public void setCommentContent(String commentContent) {
this.commentContent = commentContent;
}
public int getPraiseNum() {
return praiseNum;
}
public void setPraiseNum(int praiseNum) {
this.praiseNum = praiseNum;
}
public boolean isPraised() {
return isPraised;
}
public void setPraised(boolean praised) {
isPraised = praised;
}
}
public class Clopediahuashupihua extends AppCompatActivity implements View.OnClickListener {
private RecyclerView recyclerView;
private List<Comment> mComment;
private TextView commentSubmit;
private ColopediaAdapter adapter;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clopedia_huashupihua);
iniViews();
iniList();
iniRecyclerView();
}
private void iniViews(){
mComment = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.colopedia_recycler);
commentSubmit = (TextView) findViewById(R.id.comment_submit);
editText = (EditText) findViewById(R.id.colopedia_comment_content);
commentSubmit.setOnClickListener(this);
}
private void iniRecyclerView(){
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
adapter = new ColopediaAdapter(mComment);
recyclerView.setAdapter(adapter);
}
private void iniList(){
mComment = MainActivity.comments;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.comment_submit:
String content = editText.getText().toString();
mComment.add(new Comment(R.drawable.baikepinglun_1_head, "小道夫",
content, 0));
MainActivity.comments = mComment;
adapter.notifyDataSetChanged();
break;
default:
break;
}
}
}
点击右边跳转:点击跳转 https://github.com/FishInWater-1999/Android-shopping-FirstRoad
有问题请在评论区留言