结尾
如何才能让我们在面试中对答如流呢?
答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?为此我整理了一份Android学习资料路线:
这里是一份BAT大厂面试资料专题包:
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
//刷新前要清空原先的数据
chatList.clear();
for(int i=0;i<10;++i){
chat chats=new chat();
chats.title="下拉刷新"+i;
chats.time="12:"+(10+i);
chats.content="开心的第"+i+"天";
chatList.add(chats);
}
/*重新刷新列表控件的数据*/
myAdapter.notifyDataSetChanged();
smartRefreshLayout.finishRefresh(2000);
}
});
smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
for(int i=0;i<10;++i){
chat chats=new chat();
chats.title="上拉更多"+i;
chats.time="12:"+(10+i);
chats.content="开心的第"+i+"天";
chatList.add(chats);
}
/*重新刷新列表控件的数据*/
myAdapter.notifyDataSetChanged();
smartRefreshLayout.finishLoadMore(2000);
}
});
![在这里插入图片描述](https://img-blog.csdnimg.cn/008ccdfa342e41a59c428f5618abf7fb.gif#pic_center)
修改Header和Footer的设置不同的刷新样式
![](https://img-blog.csdnimg.cn/img_convert/6981d19a3c0a8608bdde36bb4d61d4b7.gif)
//头部刷新样式
smartRefreshLayout.setRefreshHeader(new BezierRadarHeader(this)
.setEnableHorizontalDrag(true));
//尾部刷新样式
smartRefreshLayout.setRefreshFooter(new BallPulseFooter(this)
.setSpinnerStyle(SpinnerStyle.FixedFront));
[]( )5\. MainActivity完整代码
=======================================================================================
public class MainActivity extends AppCompatActivity {
List<chat> chatList=new ArrayList<chat>();
RecyclerView recyclerView;
MyAdapter myAdapter;
SmartRefreshLayout smartRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取recyclerView
recyclerView=findViewById(R.id.recyclerView);
//填充一些数据
for(int i=0;i<10;++i){
chat chats=new chat();
chats.title="便签"+i;
chats.time="12:"+(10+i);
chats.content="开心的第"+i+"天";
chatList.add(chats);
}
myAdapter=new MyAdapter();
//填充布局文件
recyclerView.setAdapter(myAdapter);
/*设置布局文件的显示方式*/
recyclerView.setLayoutManager(new LinearLayoutManager(this));
smartRefreshLayout=findViewById(R.id.refresh_parent);
//头部刷新样式
smartRefreshLayout.setRefreshHeader(new BezierRadarHeader(this)
.setEnableHorizontalDrag(true));
//尾部刷新样式
smartRefreshLayout.setRefreshFooter(new BallPulseFooter(this)
.setSpinnerStyle(SpinnerStyle.FixedFront));
smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
//刷新前要清空原先的数据
chatList.clear();
for(int i=0;i<10;++i){
chat chats=new chat();
chats.title="下拉刷新"+i;
chats.time="12:"+(10+i);
chats.content="开心的第"+i+"天";
chatList.add(chats);
}
/*重新刷新列表控件的数据*/
myAdapter.notifyDataSetChanged();
smartRefreshLayout.finishRefresh(1000);
}
});
smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
for(int i=0;i<10;++i){
chat chats=new chat();
chats.title="上拉更多"+i;
chats.time="12:"+(10+i);
chats.content="开心的第"+i+"天";
chatList.add(chats);
}
/*重新刷新列表控件的数据*/
myAdapter.notifyDataSetChanged();
smartRefreshLayout.finishLoadMore(1000);
}
});
}
/*泛型的使用,负责将布局文件复制n次*/
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
/*加载并返回布局文件 java->xml*/
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.item_chat,parent,false);
MyViewHolder myViewHolder=new MyViewHolder(view);
return myViewHolder;
}
/*填充,修改布局里的控件内容*/
/*1.可以将数据提前填充到一个数组中
* 2.通过数组的下标获取到值,填充到控件中*/
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
chat chat=chatList.get(position);
holder.textView1.setText(chat.title);
holder.textView2.setText(chat.time);
holder.textView3.setText(chat.content);
holder.constraintLayout.setOnClickListener(
(view)->{
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
);
}
/*将布局复制的次数,返回值为item显示的数量*/
@Override
public int getItemCount() {
return chatList.size();
}
}
/*如何获取到item里的内容???
*
* 1. 在Activity中创建一个内部类*/
/*创建一个内部类,用于获取item_chat.xml中的组件*/
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView textView1;
TextView textView2;
TextView textView3;
ConstraintLayout constraintLayout;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
/*并不是直接使用findViewById,而是通过调用itemView
* 如果直接使用findViewById,默认是在MainActivity中查找*/
textView1 = itemView.findViewById(R.id.textView);
textView2 = itemView.findViewById(R.id.textView2);
textView3 = itemView.findViewById(R.id.textView3);
constraintLayout=itemView.findViewById(R.id.rootView);
}
}
实战系列
话不多说,Android实战系列集合都已经系统分类好,由于文章篇幅问题没法过多展示
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
}
}
实战系列
话不多说,Android实战系列集合都已经系统分类好,由于文章篇幅问题没法过多展示
[外链图片转存中…(img-Uv0w3M9L-1715819350833)]
[外链图片转存中…(img-eiHu65ti-1715819350833)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!