栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在Fragment中使用ListView+ViewPage

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Fragment中使用ListView+ViewPage

实例: 这是一个简单的主界面框架。主界面是 MainActivity 。其中 底部包含了“首页”、“消息”、“笔记”和“我的”四个按钮,分别指向四个Fragment 界面模块。已知该项目使用了 ViewPage+Fragment 方式构建,其中“首页”、“消息”、 “笔记”和“我的”都是 Fragment

重点:

     本文主要是像讲ListView在Fragment中的使用。在我的界面中,这些一行一行的信息栏是通过ListView在"我的"Fragment界面中展示。

项目目录:

 

 

MyFragment页面编写:

在Fragment中,绑定视图与Activity的方法不同

在Activity中:

 view = View.inflate(MainActivity.this,R.layout.itemlayout,null);

在Fragment中

通过这个inflater.inflate进行绑定

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_my, container, false);
        myList = view.findViewById(R.id.mylist);

        MyAdapter myAdapter = new MyAdapter();
        myList.setAdapter(myAdapter);

        return view;
    }

完整代码: activity_main.xml布局

上面一个ViewPage 下面四个按钮




    
    
    
    
    
    
    
    

    




    

首页、消息、笔记界面Fragment xml布局




    
    

 




    
    

 




    
    

“我的”界面布局

这里因为下面两行与上面两行差别比较大,所以上面的 8行用的是ListView,下面两行是单独写的界面。




    

    


        

        

    

    

    


    
        

        

        

    

    

    
        

        

        

        



    

MyFragment.java

其中包含了ListView的Adapter,并对Adapter进行编写使它可以完整的显示信息。

package com.edu.nchu.lab3exam02;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import java.util.Scanner;


public class MyFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    ListView myList = null;

    String[] lefts = {"头像","昵称","学号","电话","二维码名片","性别","生日","地区",};
    String[] rights = {"大海","7895789","18874589856","男","1980/11/26","江西-南昌",};
    int[] images = {R.drawable.three,R.drawable.four};

    TextView text1;
    TextView text2;
    ImageView image1;



    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public MyFragment() {
        // Required empty public constructor
    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_my, container, false);
        myList = view.findViewById(R.id.mylist);

        MyAdapter myAdapter = new MyAdapter();
        myList.setAdapter(myAdapter);

        return view;
    }




    private class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {//获取item的数量
            return lefts.length;
        }

        @Override
        public Object getItem(int i) {//i表示当前item的序号,序号从0开始编写,getIte用于获取某个item
            return lefts[i];
        }

        @Override
        public long getItemId(int i) {//获取选中的item的编号
            return i;
        }

        @Override//用于配置listview要加载的内容,包括视图和数据
        public View getView(int i, View view, ViewGroup viewGroup) {
            //这种写法,每次调用都要生成一个新的View,那么当数据多了,那就要生成很多个view,
//             这样会造成资源浪费


            if (i != 0 && i != 4) {


                View view1 = getActivity().getLayoutInflater().inflate(R.layout.itemlayout1, null);
                text1 = view1.findViewById(R.id.text1);
                text2 = view1.findViewById(R.id.text2);
                text1.setText(lefts[i]);

                if (i > 0 && i < 4) {
                    text2.setText(rights[i - 1]);
                } else if (i > 4 && i < 8) {
                    text2.setText(rights[i - 2]);
                }

                return view1;
            }else if(i == 0){

                System.out.println("0");
                View view2 = getActivity().getLayoutInflater().inflate(R.layout.itemlayout2, null);
                text1 = view2.findViewById(R.id.text1);
                image1 = view2.findViewById(R.id.icon1);
                text1.setText(lefts[i]);
                image1.setBackgroundResource(images[0]);
                return view2;
            }else if(i == 4){
                System.out.println("4");
                View view3 = getActivity().getLayoutInflater().inflate(R.layout.itemlayout2, null);
                text1 = view3.findViewById(R.id.text1);
                image1 = view3.findViewById(R.id.icon1);
                text1.setText(lefts[i]);
                image1.setImageResource(images[1]);
                return view3;
            }

            return view;
        }


    }





}

MyPageAdpater

package com.edu.nchu.lab3exam02;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

import java.util.List;

public class MyPageAdapter extends FragmentPagerAdapter {
    //创建fragmentList集合
    private List fragmentList;
    //构造方法实现传值
    public MyPageAdapter(FragmentManager fm, List fragmentList) {
        super(fm);
        this.fragmentList = fragmentList;
    }
    //返回fragmentList对象
    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }
    //返回fragmentList对象个数
    @Override
    public int getCount() {
        return fragmentList.size();
    }
}

MainActivity

package com.edu.nchu.lab3exam02;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    MessageFragment messageFragment=new MessageFragment();
    DongtaiFragment dongtaiFragment=new DongtaiFragment();
    ContactFragment contactFragment=new ContactFragment();
    MyFragment myFragment = new MyFragment();
    ViewPager viewPager;


    List fragmentList = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button1=findViewById(R.id.button2);
        Button button2=findViewById(R.id.button3);
        Button button3=findViewById(R.id.button4);
        Button button4=findViewById(R.id.button5);
        viewPager = findViewById(R.id.wx_vp);

        fragmentList.add(messageFragment);
        fragmentList.add(dongtaiFragment);
        fragmentList.add(contactFragment);
        fragmentList.add(myFragment);

        MyPageAdapter adapter = new MyPageAdapter(getSupportFragmentManager(), fragmentList);
        //绑定适配器
        viewPager.setAdapter(adapter);

        button1.setOnClickListener((View.OnClickListener) this);
        button2.setOnClickListener((View.OnClickListener) this);
        button3.setOnClickListener((View.OnClickListener) this);
        button4.setOnClickListener((View.OnClickListener) this);

    }


    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button2:
                //通过setCurrentItem()方法实现点击跳转;
                viewPager.setCurrentItem(0);
                break;
            case R.id.button3:
                viewPager.setCurrentItem(1);
                break;
            case R.id.button4:
                viewPager.setCurrentItem(2);
                break;
            case R.id.button5:
                viewPager.setCurrentItem(3);
                break;
            default:
                break;
        }

    }
}

另外三个的Fragment的java文件就不放了,就是自动生成的那个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/891487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号