咨询实战(1)模拟月考 侧拉-imageloader,pullRefresh TabLayout 频道管理

activity 包:

LoginActivity
public class LoginActivity extends AppCompatActivity {

TextView textView;
int time = 3;
int  temp = 0;
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);

        time--;
        if(time<=0){
            startActivity(new Intent(LoginActivity.this,MainActivity.class));
            finish();
        }else{
            textView.setText(time+"S");
            handler.sendEmptyMessageDelayed(1,1000);
        }
    }
};


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    textView = (TextView) findViewById(R.id.ji);

    handler.sendEmptyMessageDelayed(1,1000);
}

}

MainActivity
public class MainActivity extends AppCompatActivity {

private DrawerLayout drawerLayout;
private ActionBarDrawerToggle toggle;
private ViewPager contents;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //为空才添加Fragment: 左边菜单s
    if(savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.left_drawer,new LeftFragment())
                .commit();
    }



    //初始化View
    initView();

    //加载数据
    initData();

}

private void initData() {
}

private void initView() {

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    drawerLayout = findViewById(R.id.drawer);

   toggle = new ActionBarDrawerToggle(this,drawerLayout,R.string.open_drawer,R.string.close_drawer);
   drawerLayout.addDrawerListener(toggle);
   toggle.syncState();

   contents = findViewById(R.id.contents);

   contents.setAdapter(new MinePageAdapter(getSupportFragmentManager()));
    TabLayout tabLayout = findViewById(R.id.bottom);

    tabLayout.setupWithViewPager(contents);
    
}

 public void showPage(int i){
     contents.setCurrentItem(i);
     drawerLayout.closeDrawer(Gravity.START);
 }


@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if(toggle.onOptionsItemSelected(item)) {
        return  true;
    }
    return super.onOptionsItemSelected(item);
}

}

adapter 包:

ConAdapter

public class ConAdapter extends BaseAdapter {

private Context mcon;
private List<Bean.DataBean> mjihe;

public ConAdapter(Context con) {
    this.mcon = con;
  mjihe = new ArrayList<>();
}

public void setMjihe(List <Bean.DataBean> jihe) {
    mjihe.clear();
    mjihe.addAll(jihe);
    notifyDataSetChanged();
}

public void addMjihe(List <Bean.DataBean> jihe) {

    mjihe.addAll(jihe);
    notifyDataSetChanged();
}

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

@Override
public Bean.DataBean getItem(int position) {
    return mjihe.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder;
    if(convertView == null){
     viewHolder =  new ViewHolder();
     convertView = LayoutInflater.from(mcon).inflate(R.layout.item,parent,false);
     viewHolder.text = convertView.findViewById(R.id.text);
     viewHolder.image = convertView.findViewById(R.id.image);
        convertView.setTag(viewHolder);
    }else{
        viewHolder =  (ViewHolder) convertView.getTag();
    }
    viewHolder.text.setText(mjihe.get(position).getNews_title());

    DisplayImageOptions options = new DisplayImageOptions.Builder()

                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();

    ImageLoader.getInstance().displayImage(mjihe.get(position).getPic_url(),viewHolder.image,options);
    return convertView;
}

class ViewHolder{
    TextView  text;
    ImageView  image;
}

}

HomePageAdapter
public class HomePageAdapter extends FragmentPagerAdapter {

private List<ChannelBean> mDatas;

/* private String [] pageNames = new String[] {“推荐”,“文化”,“军事”,“娱乐”};*/

public HomePageAdapter(FragmentManager fm) {
    super(fm);
    mDatas = new ArrayList<>();
}

public void setmDatas(List<ChannelBean> mDatas) {
    this.mDatas = mDatas;
    notifyDataSetChanged();
}



@Override
public Fragment getItem(int position) {
    switch (position) {
        case  0:
            return  new Top1Fragment();
            default:
                return  new Top2Fragment();
    }

}




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

}



@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return mDatas.get(position).getName();
}

}

MinePageAdapter
public class MinePageAdapter extends FragmentPagerAdapter {

private  String [] meuns = new String[] {"文章","站点","主持"};

public MinePageAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {

    switch (position){

        case 0:
             return  new HomeFragment();

        case  1:
            return  new MineFragment();


        case 2:
            return  new VideoFragment();

        default:
            return  new Fragment();

    }

}




@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return meuns[position];
}

@Override
public int getCount() {
    return meuns.length;
}

}

LeftMenuAdapter

public class LeftMenuAdapter extends BaseAdapter{

private  String [] meuns = new String[] {"文章","站点","主持"};

private Context mContext;

public LeftMenuAdapter(Context mContext) {
    this.mContext = mContext;
}

@Override
public int getCount() {
    return meuns.length + 1;

}

/*  private final int ITEM_COUNT = 2;
  private final int IMAGE_TYPE = 0;
  private final int TEXT_TYPE = 1;


@Override
public int getViewTypeCount() {
    return  ITEM_COUNT;
}

@Override
public int getItemViewType(int position) {

    return position == 0 ? IMAGE_TYPE : TEXT_TYPE;
}*/

@Override
public String getItem(int position) {
    if(position == 0){
          return null;
    }

    return meuns[position -1];



}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder = null;
    if(convertView == null){
       viewHolder  = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(R.layout.menu_text_item,parent,false);
      /*  viewHolder = new ViewHolder(convertView);*/
        viewHolder.textView = convertView.findViewById(R.id.text);

        convertView.setTag(viewHolder);
    }else{
         viewHolder = (ViewHolder) convertView.getTag();
    }



        //*  viewHolder.bindData(getItem(position));*//*
           viewHolder.textView .setText(getItem(position));



    return convertView;
}

class ViewHolder {
    TextView textView;

   /* public ViewHolder(View itemView) {
        imageView = itemView.findViewById(R.id.icon);
        textView = itemView.findViewById(R.id.text);
        itemView.setTag(this);
    }*/

   /* public void bindData(String item) {
        textView.setText(item);
    }*/
}

}

dao 包:
Dao
public class Dao {

/* private static Dao instance;*/
private MHelper helper;
private SQLiteDatabase database;

public Dao(Context context) {

    helper = new MHelper(context);
    database = helper.getReadableDatabase();

}

/* Dao(Context context) {
database = new MHelper(context).getWritableDatabase();
}

public static Dao getInstance(Context context) {
    if (instance == null) {
        instance = new Dao(context);
    }
    return instance;
}*/

/* //修改
public void updata(String name) {
ContentValues values = new ContentValues();
values.put(“name”, name);
database.update(“user”, values, “name=?”, new String[]{name});
}*/

//查询
public List<Bean.DataBean> queryData(){
    List<Bean.DataBean> list = new ArrayList<>();
    Cursor user = database.query("user", null, null, null, null, null, null);
    while (user.moveToNext()){
        String summary = user.getString(user.getColumnIndex("news_summary"));
        String title = user.getString(user.getColumnIndex("news_title"));
        String picUrl = user.getString(user.getColumnIndex("pic_url"));
        list.add(new Bean.DataBean(title,summary, picUrl));
    }
    return list;
}


//删除

public void delete(String news_title,String news_summary, String picUrl) {
    database.delete("user", "news_title=? and news_summary=? and picUrl=?", new String[]{news_title});

}

//增加
public void add(String news_title,String news_summary, String picUrl){
    ContentValues values = new ContentValues();
    values.put("news_summary",news_summary);
    values.put("news_title",news_title);
    values.put("pic_url", picUrl);
    database.insert("user",null,values);
}

}

MHelper
public class MHelper extends SQLiteOpenHelper {

public MHelper(@Nullable Context context) {
    super(context,"ss.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL("create table user(id integer primary key autoincrement,news_summary text,news_title text, pic_url text)");


}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

fragment 包:
HomeFragment
public class HomeFragment extends Fragment {

private TabLayout top;
private ViewPager contents;
private List<ChannelBean> datas;
private  HomePageAdapter adapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_top,container,false);
}


@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

   top = view.findViewById(R.id.top);
    contents = view.findViewById(R.id.contents);
    adapter = new HomePageAdapter(getChildFragmentManager());
    contents.setAdapter(adapter);
    top.setupWithViewPager(contents);

    datas = new ArrayList<>();
    //数据库查询频道
    datas.add(new ChannelBean("体育", true));
    datas.add(new ChannelBean("关注", true));
    datas.add(new ChannelBean("推荐", true));
    datas.add(new ChannelBean("国际", true));
    datas.add(new ChannelBean("热点", true));
    datas.add(new ChannelBean("军事", true));
    datas.add(new ChannelBean("八卦", true));
    datas.add(new ChannelBean("游戏", false));
    datas.add(new ChannelBean("宠物", false));
    datas.add(new ChannelBean("汽车", false));
    datas.add(new ChannelBean("热卖", false));
    datas.add(new ChannelBean("外卖", false));
    datas.add(new ChannelBean("地图", false));
    datas.add(new ChannelBean("视频", false));
    datas.add(new ChannelBean("图片", false));
    datas.add(new ChannelBean("音乐", false));
    datas.add(new ChannelBean("家居", false));
    datas.add(new ChannelBean("网路", false));
    datas.add(new ChannelBean("购物", false));
    datas.add(new ChannelBean("其他", false));
    adapter.setmDatas(getSelectedResult(datas));

    view.findViewById(R.id.to_cm).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //频道管理页面
            //ChannelActivity.startChannelForResult(getActivity(), datas);
            Gson gson = new Gson();
            String jsonArray = gson.toJson(datas);
            Intent intent = new Intent(getActivity(), ChannelActivity.class);
            intent.putExtra(RESULT_JSON_KEY, jsonArray);
            ///
            startActivityForResult(intent, REQUEST_CODE);
        }
    });
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE) {
        String json = data.getStringExtra("json");
        datas = new Gson().fromJson(json, new TypeToken<ArrayList<ChannelBean>>(){}.getType());
        adapter.setmDatas(getSelectedResult(datas));
        return;
    }

    super.onActivityResult(requestCode, resultCode, data);
}

private List<ChannelBean> getSelectedResult(List<ChannelBean> datas) {
    List<ChannelBean> result = new ArrayList<>();
    for (ChannelBean bean:datas) {
        if(bean.isSelect()) {
            result.add(bean);
        }
    }
    return result;
}

}

LeftFragment
public class LeftFragment extends Fragment {

private ListView menus;



@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_left,container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    menus = view.findViewById(R.id.menus);

    menus.setAdapter(new LeftMenuAdapter(getActivity()));

    menus.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView <?> parent, View view, int position, long id) {

            //图片 不做跳转
            if(position ==0) {

                return;
            }

            //切换页面
            ((MainActivity)getActivity()).showPage(position-1);
        }
    });

}

}

MineFragment
public class MineFragment extends Fragment {

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

    TextView textView = new TextView(getActivity());
    textView.setText(getClass().getSimpleName());
    return textView;
}

Top1Fragment
public class Top1Fragment extends Fragment {

private Banner banner;
private ArrayList list_path;
private ArrayList list_title;
private XListView xListView;
private PullToRefreshListView ptrListView;
private int mPage ;
private int PAGE_COUNT = 10 ;
private ConAdapter adapter;
private Dao dao;
private ActionBarDrawerToggle mToggle;
private DrawerLayout drawer;

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

   View view = inflater.inflate(R.layout.activity_second,container,false);

    ptrListView = view.findViewById(R.id.fresh);
    banner = view.findViewById(R.id.banner);
    dao = new Dao(getActivity());

  /*xListView = view.findViewById(R.id.list);*/
    adapter = new ConAdapter(getActivity());
    ptrListView.setAdapter(adapter);
/*  xListView.setAdapter(adapter);*/




    //同时支持刷新 加载
    ptrListView.setMode(PullToRefreshBase.Mode.BOTH);
    ptrListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
            mPage = 1;
            initData();
        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            //mPage ++;//2   2
            initData();
        }
    });

    mPage = 1;

    initData();

   initdata();
    return view;
}






private String path ="http://api.expoon.com/AppNews/getNewsList/type/1/p/?d";

private void initData() {

    NetUtil.getInstance().getRequest(String.format(path, mPage), Bean.class, new NetUtil.Callback<Bean>() {
      @Override
        public List <Bean.DataBean> onSuccess(Bean bean) {

            /* Dao.getInstance(getActivity()).add(bean.getData().get(0));*/

            List<Bean.DataBean> data = bean.getData();
            for (int i = 0 ; i<data.size(); i++){

                String  news_summary = data.get(i).getNews_summary();
                String  news_title = data.get(i).getNews_title();
                String   pic_url = data.get(i).getPic_url();
                dao.add(news_summary,news_title,pic_url);
            }

            List<Bean.DataBean> dataBeans = dao.queryData();



            if(mPage == 1){

                adapter.setMjihe(bean.getData());
            }else {

                adapter.addMjihe(bean.getData());
            }

            mPage++;

              //停止刷新 加载

            ptrListView.onRefreshComplete();
            return null;
        }

          /*  List<Bean.DataBean> data = bean.getData();
            for (int i = 0 ; i<data.size();i++){
                String news_summary = data.get(i).getNews_summary();
                String news_title = data.get(i).getNews_title();
                String  pic_url   =  data.get(i).getPic_url();
                dao.add(news_summary,news_title,pic_url);
            }
            List<Bean.DataBean> dataBeans = dao.queryData();*/

    });

}

private void initdata() {

    list_path = new ArrayList <>();
    list_title = new ArrayList <>();
    list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
    list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
    list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
    list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");
    list_title.add("呃呃呃");
    list_title.add("哈哈哈");
    list_title.add("666");
    list_title.add("嗯嗯嗯");

    banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);

    banner.setImageLoader(new ImageLoader() {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load((String) path).into(imageView);
        }
    });

    banner.setImages(list_path);
    banner.setBannerAnimation(Transformer.Default);
    banner.setDelayTime(2000);
    banner.setBannerTitles(list_title);
    banner.isAutoPlay(true);
    banner.setIndicatorGravity(BannerConfig.CENTER).start();
}

/* @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

    xListView.setPullLoadEnable(true);
    xListView.setPullRefreshEnable(true);
    xListView.setXListViewListener(new XListView.IXListViewListener() {
        @Override
        public void onRefresh() {
            mpage = 1;
            loadData();
        }

        @Override
        public void onLoadMore() {

            mpage++;

            loadData();
        }
    });

    loadData();
}

private String path ="http://api.expoon.com/AppNews/getNewsList/type/1/p/?d";

private void loadData() {

    NetUtil.getInstance().getRequest(String.format(path, mpage), Bean.class, new NetUtil.Callback<Bean>() {

        @Override
        public void onSuccess(Bean bean) {
          if(mpage == 1){
               adapter.setMjihe(bean.getData());
          }else{
              adapter.addMjihe(bean.getData());
          }

          xListView.stopLoadMore();
          xListView.stopRefresh();

        }
    });
}*/

}

Top2Fragment
public class Top2Fragment extends Fragment {

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

 TextView textView =  new TextView(getActivity());
 textView.setText("页面");
    return textView;
}

}

VideoFragment
public class VideoFragment extends Fragment {

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

    TextView textView = new TextView(getActivity());
    textView.setText(getClass().getSimpleName());
    return textView;
}

}

App
public class App extends Application {

@Override
public void onCreate() {
    super.onCreate();

        String path = Environment.getExternalStorageDirectory()+"/image";
        File file = new File(path);
       ImageLoaderConfiguration configuration = null;
       configuration = new ImageLoaderConfiguration.Builder(this)
               .memoryCacheSize(10)
               .diskCacheSize(50*1024*1024)
               .diskCache(new UnlimitedDiskCache(file))
               .build();
    com.nostra13.universalimageloader.core.ImageLoader.getInstance().init(configuration);


}

}

NetUtil

public class NetUtil {

private static NetUtil instance;
private Gson gson;
private Dao dao;


private NetUtil(){
     gson = new Gson();
}

public static NetUtil getInstance() {

if(instance == null){
    instance = new NetUtil();
}

    return instance;
}

public interface Callback<T>{
    List <Bean.DataBean> onSuccess(T t);
}


public void  getRequest(final  String  urlStr,final  Class clazz, final Callback callback){

    new AsyncTask<String,Void,Object>(){

        @Override
        protected Object doInBackground(String... strings) {
            return getRequest(urlStr, clazz);
        }

        @Override
        protected void onPostExecute(Object o) {
           callback.onSuccess(o);



        }
    }.execute(urlStr);

}

private <T> T getRequest(String urlStr, Class clazz) {

    return  (T) gson.fromJson(getRequest(urlStr),clazz);

}

private String getRequest(String urlStr) {
   String result ="";

    try {
        URL url = new URL(urlStr);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.setConnectTimeout(5000);
        urlConnection.setReadTimeout(5000);
     int responseCode = urlConnection.getResponseCode();
   if(responseCode == 200){

       result = stream(urlConnection.getInputStream());



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

    return result;
}

private String stream(InputStream inputStream) throws IOException {

    StringBuilder builder = new StringBuilder();
 BufferedReader br =  new BufferedReader(new InputStreamReader(inputStream));

for(String tmp = br.readLine(); tmp != null ; tmp = br.readLine()){

     builder.append(tmp);

}

    return builder.toString();
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值