爱站权重,网站设计亮点,百度导航下载2020新版语音,企业网络推广最简单方法一、前言#xff1a;
因为工作一直在用mvvm框架#xff0c;因此这篇文章是基于mvvm框架写的。在Fragment复制之前一定要谨记项目可以跑起来。确保能跑起来之后直接复制就行。
二、代码展示#xff1a;
页面布局
?xml version1.0 encodingutf-8…一、前言
因为工作一直在用mvvm框架因此这篇文章是基于mvvm框架写的。在Fragment复制之前一定要谨记项目可以跑起来。确保能跑起来之后直接复制就行。
二、代码展示
页面布局
?xml version1.0 encodingutf-8?
layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsdatavariablenameviewModeltypecom.example.simplenotebook.ui.functionpage.regist.RegistViewModel //dataFrameLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.ui.functionpage.regist.RegistFragment!--学习练习--ListViewandroid:idid/lvandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent //FrameLayout
/layout item的页面布局
?xml version1.0 encodingutf-8?
layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginLeft20dpandroid:layout_marginTop10dpandroid:layout_marginRight20dpandroid:backgroundcolor/whiteapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:roundPercent0.2TextViewandroid:idid/tvandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_marginLeft15dpandroid:gravitycenter_verticalandroid:textColor#3D3D3Dandroid:textSize14sp //androidx.constraintlayout.widget.ConstraintLayout/androidx.constraintlayout.widget.ConstraintLayout/layout
在java代码中的使用
新建一个UserBean.java
public class UserBean {private String name;public String getName() {return name;}public void setName(String name) {this.name name;}
}
public class RegistFragment extends Fragment {private RegistViewModel viewModel;private FragmentRegistBinding binding;private ListView myListView;Overridepublic void onStart() {super.onStart();}Overridepublic void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);viewModel new ViewModelProvider(this).get(RegistViewModel.class);}NullableOverridepublic View onCreateView(NonNull LayoutInflater inflater, Nullable ViewGroup container, Nullable Bundle savedInstanceState) {if (binding null) {binding FragmentRegistBinding.inflate(inflater,container,false);binding.setViewModel(viewModel);//一定要在xml的data中申明好才可以setViewModelbinding.setLifecycleOwner(this);myListView binding.lv;myListView.setAdapter(new myAdapter(viewModel.userList,getContext()));myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {Overridepublic void onItemClick(AdapterView? adapterView, View view, int i, long l) {Log.d(TAG, onItemClick: i);}});}View rootView binding.getRoot();return rootView;}/*** 给ListView设置适配器*/public class myAdapter extends BaseAdapter{private ListUserBean list;private Context context;//下面把数据显示到平台上会有用到这个参数public myAdapter(ListUserBean list, Context context) {//创建构造方法this.list list;this.context context;}Overridepublic int getCount() {//listView能够显示多少数据一般是list有多少数据就会显示多少数据return list.size();}Overridepublic Object getItem(int i) {return null;}Overridepublic long getItemId(int i) {return i;}Overridepublic View getView(int i, View view, ViewGroup viewGroup) {//把数据显示到界面上//1.拿到布局文件,为了方式view不停创建我们需要做一个判断当view为空的时候再去创建ViewHoder viewHoder;if (view null) {//每次都要去找这个控件比较耗时如何解决呢我们需要创建一个viewHoderviewHoder new ViewHoder();view LayoutInflater.from(context).inflate(R.layout.item_home,viewGroup,false);viewHoder.textView view.findViewById(R.id.tv);view.setTag(viewHoder);}else {viewHoder (ViewHoder) view.getTag();}//2.拿到textView把值传给textView
// TextView textView view.findViewById(R.id.tv);viewHoder.textView.setText(list.get(i).getName());Log.i(TAG, getView: i);//3.把view返回出去return view;}}private final class ViewHoder{TextView textView;}
}
Fragmennt对应的view Model public class RegistViewModel extends ViewModel {public ListUserBean userList new ArrayList();public void setData(){for (int i 0; i 100; i) {UserBean ub new UserBean();ub.setName(流沔i);userList.add(ub);}}
}三、效果展示