ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

起始页+Fragment 简单综合项目

2020-06-24 10:04:01  阅读:284  来源: 互联网

标签:totalist hide Fragment private public 简单 new 起始页 id


起始页+Fragment 简单综合项目

起始页+Fragment +List View
1.首选确认需求 再进行书写
(1) 起始页 +页面跳转到主页面

	// 首选前端页面控件 获取到 后台
    private ViewPager vpPaget2;
    private TextView tvText;
	// 适配器 Fragment的集合 在里面存入 想要在 起始页显示的 Fragment
    private ArrayList<Fragment> totalist=new ArrayList<>();
    // MyAdapter2  自定义适配器 
    private  MyAdapter2 myAdapter2;
    private FragmentTransaction transaction;
    private FragmentManager manager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcom);
        vpPaget2 = findViewById(R.id.vp_paget2);
        tvText = findViewById(R.id.tv_text);


        totalist.add(new MyFragmentChildOne());
        totalist.add(new MyFragmentChildTwo());
        totalist.add(new MyFragmentChildThree());
        myAdapter2=new MyAdapter2(getSupportFragmentManager(),totalist);

      vpPaget2.setAdapter(myAdapter2);

      vpPaget2.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
          @Override
          public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

          }

          @Override
          public void onPageSelected(int position) {
                if (position==totalist.size()-1){
                	// 使用CountDownTimer 进行计时并且  
                    new CountDownTimer(3000,1000) {
                        @SuppressLint("SetTextI18n")
                        @Override
                        public void onTick(long l) {
                        // 当CountDownTimer 执行一次 进行一次 方法 
                            tvText.setText("倒计时"+l/1000+"秒");
                        }

                        @Override
                        public void onFinish() {
                        //	 当三次读秒结束 进行页面跳转 
                            Intent intent = new Intent(WelcomActivity.this, MainActivity.class);

                            startActivity(intent);
						// 最后 finish 关闭当前 页面
                            finish();
                        }
                    }.start();
                }
          }

          @Override
          public void onPageScrollStateChanged(int state) {

          }
      });
    }
}

MyAdapter2 自定义适配器 适配器书写方法

public class MyAdapter2 extends FragmentPagerAdapter {
	//声明集合 通过构造赋值 
    private ArrayList<Fragment> totalist;
	//FragmentManager  调用getSupportFragmentManager() 进行赋值
    public MyAdapter2(@NonNull FragmentManager fm, ArrayList<Fragment> totalist) {
        super(fm);
        this.totalist = totalist;
    }
	//返回 postion位置的 Fegment
    @NonNull
    @Override
    public Fragment getItem(int position) {
        return totalist.get(position);
    }
	//返回 feagment的总数
    @Override
    public int getCount() {
        return totalist.size();
    }
}

主页面的书写

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <FrameLayout
        android:id="@+id/myFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <RadioGroup
        android:id="@+id/radio_button"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        >
        <RadioButton
            android:id="@+id/index"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:text="首页"
            android:gravity="center"
            android:checked="true"
            android:drawableTop="@mipmap/ye"
            android:paddingTop="5dp"
            />
        <RadioButton
            android:id="@+id/photos"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:text="图库"
            android:gravity="center"
            android:checked="true"
            android:drawableTop="@mipmap/hm"
            android:paddingTop="5dp"
            />
        <RadioButton
            android:id="@+id/finds"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:text="首页"
            android:gravity="center"
            android:checked="true"
            android:drawableTop="@mipmap/search"
            android:paddingTop="5dp"
            />
        <RadioButton
            android:id="@+id/linkman"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:text="消息"
            android:gravity="center"
            android:drawableTop="@mipmap/wechat"
            android:paddingTop="5dp"
            />
        <RadioButton
            android:id="@+id/discover"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:text="我的"
            android:gravity="center"
            android:drawableTop="@mipmap/post"
            android:paddingTop="5dp"
            />
    </RadioGroup>
    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:layout_above="@+id/radio_button"
        />
</RelativeLayout>

主页面的 核心代码

// 五个页面的 显示转换
 private void initView() {
        myFragment = findViewById(R.id.myFragment);
        radioButton = findViewById(R.id.radio_button);
        index = findViewById(R.id.index);
        photos = findViewById(R.id.photos);
        finds = findViewById(R.id.finds);
        linkman = findViewById(R.id.linkman);
        discover = findViewById(R.id.discover);
        textView = findViewById(R.id.text_view);
            one=new MyFragmentOne();
            two=new MyFragmentTwo();
            three=new MyFragmentThree();
            four=new MyFragmentFour();
            find=new MyFragmentFind();
      getSupportFragmentManager()
        .beginTransaction()
       .add(R.id.myFragment,one)
        .add(R.id.myFragment,two)
        .add(R.id.myFragment,three)
        .add(R.id.myFragment,four)
        .add(R.id.myFragment,find)
        .commit();
        radioButton.setOnCheckedChangeListener ( new RadioGroup.OnCheckedChangeListener ( ) {
            @Override
            public void onCheckedChanged(RadioGroup group , int checkedId) {
                switch (checkedId) {
                    case R.id.index:
                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.myFragment,find).commit();
                        break;
                    case R.id.finds:
                        getSupportFragmentManager ()
                                .beginTransaction ()
                                .replace(R.id.myFragment,one)
                                .commit ();
                        break;
                    case R.id.linkman:
                        getSupportFragmentManager ()
                                .beginTransaction ()
                                .replace(R.id.myFragment,two)
                                .commit ();
                        break;
                    case R.id.discover:
                        getSupportFragmentManager ()
                                .beginTransaction ()
                                .replace(R.id.myFragment,three)
                                .commit ();
                        break;
                    case R.id.photos:
                        getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.myFragment,four).commit();
                        break;

                }
            }
        } );
    }
}

页面中嵌套 tablayout


public class MyFragmentFind extends Fragment {
    private TabLayout tlLayout;
    private ViewPager vpPager;
    private ArrayList<String> titles=new ArrayList<>();
    private ArrayList<Fragment> totalist=new ArrayList<>();
    private MyFragmentChildOne one=new MyFragmentChildOne();
    private MyFragmentChildTwo two=new MyFragmentChildTwo();
    private MyFragmentChildThree three=new MyFragmentChildThree();
    private MyFragmentList   list=new MyFragmentList();
    private MyFragmentParger parger;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_tab,null);
        tlLayout =view.findViewById(R.id.tl_layout);
        vpPager = view.findViewById(R.id.vp_pager);

         initDatas();
        return view;
    }

    private  void initDatas() {

        titles.add("推荐");
        titles.add("男士发型打理");
        titles.add("热发型");
        titles.add("编发教程");
        totalist.add(list);
        totalist.add(one);
        totalist.add(two);
        totalist.add(three);
        parger=new MyFragmentParger(getChildFragmentManager(),totalist,titles);
        vpPager.setAdapter(parger);
        tlLayout.setupWithViewPager(vpPager);
    }
}

页面中嵌套 tablayout 页面书写(注意 : 要导入依赖)
依赖:
implementation ‘com.android.support:design:28.0.0’

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.google.android.material.tabs.TabLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8"
        android:id="@+id/tl_layout"/>

    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:id="@+id/vp_pager"/>
</LinearLayout>

普通 Frgment 页面随意书写 每一个 frgment对应一个类
每个对应类 需要继承 Frgment 并且重写方法


public class MyFragmentOne extends Fragment {
    private RadioGroup radioButton02;

    private MyFragmentChildOne childOne;
    private MyFragmentChildTwo childTwo;
    private MyFragmentChildThree childThree;
    private MyFragmentChildFour childFour;
    private MyFragmentChildFive childFive;



    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater , @Nullable ViewGroup container , @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate ( R.layout.fragment_view01 , null );
        childOne = new MyFragmentChildOne ( );
        childTwo = new MyFragmentChildTwo ( );
        childThree = new MyFragmentChildThree ( );
        childFour = new MyFragmentChildFour ( );
        childFive = new MyFragmentChildFive ( );



       // childOne.setMessage ( childThree );

        MainActivity activity = (MainActivity) getActivity ( );

        //childThree.setMessage (activity.three );

        getChildFragmentManager ( )
                .beginTransaction ( )
                .add ( R.id.myFragment_02 , childTwo )
                .add ( R.id.myFragment_02 , childThree )
                .add ( R.id.myFragment_02 , childFour )
                .add ( R.id.myFragment_02 , childFive )
                .add ( R.id.myFragment_02 , childOne )
                .hide ( childTwo )
                .hide ( childThree )
                .hide ( childFour )
                .hide ( childFive )
                .show ( childOne )
                .commit ( );

        radioButton02 = (RadioGroup) view.findViewById ( R.id.radio_button_02 );




        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated ( savedInstanceState );
//        final MainActivity activity = (MainActivity) getActivity ( );

        radioButton02.setOnCheckedChangeListener ( new RadioGroup.OnCheckedChangeListener ( ) {
            @Override
            public void onCheckedChanged(RadioGroup group , int checkedId) {
                switch (checkedId) {
                    case R.id.button_all:
                        getChildFragmentManager ( )
                                .beginTransaction ( )
                                .hide ( childTwo )
                                .hide ( childThree )
                                .hide ( childFour )
                                .hide ( childFive )
                                .show ( childOne )
                                .commit ( );

                        break;
                    case R.id.button_video:
                        getChildFragmentManager ( )
                                .beginTransaction ( )
                                .hide ( childOne )
                                .hide ( childThree )
                                .hide ( childFour )
                                .hide ( childFive )
                                .show ( childTwo )
                                .commit ( );
                        break;
                    case R.id.button_pic:

                        getChildFragmentManager ( )
                                .beginTransaction ( )
                                .hide ( childOne )
                                .hide ( childTwo )
                                .hide ( childThree )
                                .hide ( childFive )
                                .show ( childFour)
                                .commit ( );
                        break;
                    case R.id.button_voice:
                        getChildFragmentManager ( )
                                .beginTransaction ( )
                                .hide ( childOne )
                                .hide ( childTwo )
                                .hide ( childFour )
                                .hide ( childFive )
                                .show ( childThree)
                                .commit ( );
                        break;
                    case R.id.button_dz:
                        getChildFragmentManager ( )
                                .beginTransaction ( )
                                .hide ( childOne )
                                .hide ( childTwo )
                                .hide ( childThree )
                                .hide ( childFour )
                                .show (childFive )
                                .commit ( );
                        break;
                }
            }
        } );


    }
}

fegment中 如何书写 ListView

public class MyFragmentList extends Fragment {
    private ListView iv_list;
    // 放入json 数据的 网址 
    private   String urlString="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=10&page=1";
    private   MyAdapter myAdapter;
    // json数据解析后的类 创建集合 
    private  List<JavaBean.DataBean> totalist=new ArrayList<>();
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_list,null);
        new JsonAsyntck().execute(urlString);
        iv_list=view.findViewById(R.id.iv_list);
        myAdapter=new MyAdapter(getActivity().getBaseContext(),totalist);
        iv_list.setAdapter(myAdapter);
        iv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(getActivity().getBaseContext(), "短点击事件", Toast.LENGTH_SHORT).show();
            }
        });
        iv_list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(getActivity().getBaseContext(), "长点事件", Toast.LENGTH_SHORT).show();

                return false;
            }
        });
        return view;
    }
    public  class JsonAsyntck extends AsyncTask<String,Void,List<JavaBean.DataBean>> {
        @Override
        protected List<JavaBean.DataBean> doInBackground(String... strings) {

            try {
                URL url = new URL(strings[0]);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                conn.setRequestMethod("GET");
                conn.connect();
                if (conn.getResponseCode()==200){
                    InputStream is = conn.getInputStream();
                    ByteArrayOutputStream byso = new ByteArrayOutputStream();
                    int len=0;
                    byte[] bs = new byte[1024];

                    while ((len=is.read(bs))!=-1){
                        byso.write(bs,0,len);

                    }
                    String json = byso.toString();

                    Gson gson = new Gson();
                    JavaBean javaBean = gson.fromJson(json, JavaBean.class);
                    List<JavaBean.DataBean> data = javaBean.getData();

                    return data;
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            return null;
        }

        @Override
        protected void onPostExecute(List<JavaBean.DataBean> dataBeans) {
            super.onPostExecute(dataBeans);
            if (dataBeans!=null){
                totalist.addAll(dataBeans);
                myAdapter.notifyDataSetChanged();
            }
        }
    }
}

ListView需要适配器才可以 显示内容 适配器 书写


public class MyAdapter extends BaseAdapter {
    private Context context;
    private List<JavaBean.DataBean> totalist;
    private LayoutInflater layoutInflater;

    public MyAdapter(Context context, List<JavaBean.DataBean> totalist) {
        this.context = context;
        this.totalist = totalist;
        this.layoutInflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return totalist.size();
    }

    @Override
    public Object getItem(int position) {
        return totalist.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHoder viewHoder=null;
        if (convertView==null){
            viewHoder=new ViewHoder();
            convertView=layoutInflater.inflate(R.layout.item_list,null);
            viewHoder.iv_item=convertView.findViewById(R.id.iv_item);
            viewHoder.tv_item=convertView.findViewById(R.id.tv_item);


            convertView.setTag(viewHoder);
        }else {
            viewHoder= (ViewHoder) convertView.getTag();
        }

        JavaBean.DataBean dataBean = totalist.get(position);
        String title = dataBean.getTitle();
        String pic = dataBean.getPic();

        viewHoder.tv_item.setText(title);
        Picasso.with(context).load(pic).into(viewHoder.iv_item);
        return convertView;
    }

    class  ViewHoder{
        private ImageView iv_item;
        private TextView tv_item;

    }

}

标签:totalist,hide,Fragment,private,public,简单,new,起始页,id
来源: https://blog.csdn.net/weixin_48633671/article/details/106890827

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有