android频道列表,Android : 频道管理

需要再项目的build.gradle里面写上maven {url “https://jitpack.io”},否则依赖类会报错. 效果图在最后.

allprojects {

repositories {

google()

jcenter()

maven {url "https://jitpack.io"}

}

}

第三方框架需要的依赖

implementation 'com.github.andyoom:draggrid:v1.0.1'

其他jar包

implementation 'com.android.support:design:28.0.0'

implementation 'com.google.code.gson:gson:2.8.5'

需要的权限

tools:ignore="ProtectedPermissions" />

主页面上的xml的代码

Activity里的主代码

package com.example.administrator.channel;

import android.content.Intent;

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.design.widget.TabLayout;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentPagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

import com.andy.library.ChannelActivity;

import com.andy.library.ChannelBean;

import com.example.administrator.channel.frament.aaaFragment;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private TabLayout tl;

private TextView imgbtn;

private String jsonStr;

private ArrayListchannelBeens;

private ViewPager View_Page;

private ArrayListdatas = new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

}

private void initView() {

tl = findViewById(R.id.tl);

imgbtn = (TextView) findViewById(R.id.Add_Fragment);

View_Page = (ViewPager) findViewById(R.id.View_Page);

imgbtn.setOnClickListener(this);

}

private void initData() {

//准备栏目数据

channelBeens = new ArrayList();

channelBeens.add(new ChannelBean("热点", true));

channelBeens.add(new ChannelBean("军事", true));

channelBeens.add(new ChannelBean("八卦", false));

channelBeens.add(new ChannelBean("666", false));

datas.add(new aaaFragment());

datas.add(new bbbFragment());

datas.add(new cccFragment());

datas.add(new aaaFragment());

//把选择的栏目(true)数据配置给tablayout

for (int i = 0; i < channelBeens.size(); i++) {

//进行判断

if (channelBeens.get(i).isSelect()) {

tl.addTab(tl.newTab().setText(channelBeens.get(i).getName()));

}

}

View_Page.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

@Override

public Fragment getItem(int i) {

//此处加入if判断,进行和fragment绑定,多少个条目就绑定多少次

if (channelBeens.get(i).getName().equals("热点")){

return datas.get(0);

}else if (channelBeens.get(i).getName().equals("军事")){

return datas.get(1);

}else if (channelBeens.get(i).getName().equals("八卦")){

return datas.get(2);

}else {

return datas.get(3);

}

}

@Override

public int getCount() {

int count = 0;

//循环

for (int i = 0; i < channelBeens.size(); i++) {

//进行判断

if (channelBeens.get(i).isSelect()) {

count++;

}

}

return count;

}

@Nullable

@Override

public CharSequence getPageTitle(int position) {

return channelBeens.get(position).getName();

}

});

tl.setupWithViewPager(View_Page);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.Add_Fragment:

ChannelActivity.startChannelActivity(MainActivity.this, channelBeens);

break;

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

//为true表示是频道管理回调回来的

if (requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE) {

//得到栏目管理的结果

jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);

//吐司查看

Toast.makeText(this, jsonStr, Toast.LENGTH_SHORT).show();

//打印查看

Log.i("main", jsonStr);

//清空之前的项目

tl.removeAllTabs();

//把新选择的栏目结果更新到tablayout上

Gson gson = new Gson();

//进行json解析

Type type = new TypeToken>() {

}.getType();

channelBeens = gson.fromJson(jsonStr, type);

//遍历结果,更新TabLayout

for (int i = 0; i < channelBeens.size(); i++) {

//进行判断

if (channelBeens.get(i).isSelect()) {

try {

//此处是第三方框架的一个小坑,会报IllegalStateException非法语句异常所以直接try了,然后就可以解决异常

tl.addTab(tl.newTab().setText(channelBeens.get(i).getName()));

}catch (Exception e){

}

}

View_Page.getAdapter().notifyDataSetChanged();

}

}

}

Fragment是空的 只是为了验证与fragment的联动,就不上代码了,另外有些小坑都已经填了

68d69b6427bc7295bf603d51d06fb044.png

14ce1e990e796e2ca2a14c8050b72c4f.png

ea9b806935c6b29689dda651679ce98c.png

d7f329b4ba6d0570bcc16fb824205313.png

效果图就这么多吧,第三方挺全 的,就是会出现小坑,需注意

以上;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值