在Android开发中,我们经常需要实现这样一个下拉的浏览列表:这非常有用,典型的例子就是我们的微信好友列表,
可以显示出好友的头像昵称等,还能点击实现更多功能,今天我学习了一个非常有用也是实际开发中大量应用的组件RecyclerView
我的练习项目效果图如图所示,可以看到实现了下拉浏览,显示图片和文字
实现代码。今天听的一位老师的网络课程,讲解的非常详细,我也跟着把注释都写了下来,更容易理解。
MainActivity
package com.example.recyclertest; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.example.recyclertest.adapter.ListViewAdapter; import com.example.recyclertest.beans.Datas; import com.example.recyclertest.beans.ItemBean; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView mList; private List<ItemBean> mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mList = (RecyclerView) this.findViewById(R.id.recycler_view); //准备数据 initDate(); } /** * 模拟数据 * **/ private void initDate() { //List<DataBea>---->Adapter------>setAdapter------>显示数据 mData = new ArrayList<>(); for (int i = 0; i < Datas.icons.length; i++) { ItemBean data = new ItemBean(); data.icon = Datas.icons[i]; data.title= "我是第 "+i+" 个条目"; mData.add(data); } //RecyclerView需要设置样式,其实就是设置布局管理器 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); mList.setLayoutManager(linearLayoutManager); //创建适配器 ListViewAdapter adapter = new ListViewAdapter(mData); //设置到RecyclerView里去 mList.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { //菜单的方法 //ctrl+p看方法参数ctrl+alt+p设置成成员变量 getMenuInflater().inflate(R.menu.menu,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { //子菜单return super.onOptionsItemSelected(item); } }
ItemBean
package com.example.recyclertest.beans; public class ItemBean { public int icon; public String title; }
Datas
package com.example.recyclertest.beans; import com.example.recyclertest.R; public class Datas { public static int[] icons = { R.mipmap.pic_1, R.mipmap.pic_2, R.mipmap.pic_3, R.mipmap.pic_4, R.mipmap.pic_5, R.mipmap.pic_6, R.mipmap.pic_7, R.mipmap.pic_8, R.mipmap.pic_9 }; }
ListViewAdapter
package com.example.recyclertest.adapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.example.recyclertest.R; import com.example.recyclertest.beans.ItemBean; import java.util.List; public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.InnerHolder> { private final List<ItemBean> mData; public ListViewAdapter(List<ItemBean> data){ this.mData = data; } //这个方法用于创建条目View @NonNull @Override public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { //传进去的View就是条目的界面 //拿到view View view = View.inflate(parent.getContext(), R.layout.item_list_view, null); //创建InnerHolder return new InnerHolder(view); } //这个方法用于绑定Holder,一般用来设置数据 @Override public void onBindViewHolder(@NonNull InnerHolder holder, int position) { //在这里设置数据 holder.setData(mData.get(position)); } //返回条目的个数 @Override public int getItemCount() { if (mData != null) { return mData.size(); } return 0; } public class InnerHolder extends RecyclerView.ViewHolder { private TextView mTitle; private ImageView mIcon; // public InnerHolder(@NonNull View itemView) { super(itemView); //找到条目的控件 mIcon = itemView.findViewById(R.id.list_view_icon); mTitle = itemView.findViewById(R.id.list_view_title); } //此方法用于设置数据 public void setData(ItemBean itemBean) { //设置数据 mIcon.setImageResource(itemBean.icon); mTitle.setText(itemBean.title); } } }
同时我把我的桌面图标截图当作图片素材
标签:效果,example,recyclertest,import,ListView,RecyclerView,public,view From: https://www.cnblogs.com/rsy-bxf150/p/17189751.html