listView刷新

/**
 * @Author: zhang
 * @Date: 2019/3/4 19:40
 * @Description:判断网络请求数据
 */
public class HttpUtil {
    //判断网络是否链接
    public static boolean isNetConnected(Context context){
        if (context != null){
            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manager.getActiveNetworkInfo();
            if (info != null){
                return info.isConnected();
            }
        }
        return false;
    }
    //请求数据
    public static String getNetData(String dataUrl){
        try {
            URL url = new URL(dataUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            int code = connection.getResponseCode();
            if (code == HttpURLConnection.HTTP_OK){
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                StringBuilder builder = new StringBuilder();
                String str = "";
                while ((str = reader.readLine()) != null){
                    builder.append(str);
                }
                return builder.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    //创建接口
    public interface MyCallBack{
        void getData(String str);
    }
    public static void MyAsyncTask(String url, final MyCallBack myCallBack){
        new AsyncTask<String, Void, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return HttpUtil.getNetData(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                myCallBack.getData(s);
            }
        }.execute(url);
    }
}
/**
 * @Author: zhang
 * @Date: 2019/3/4 16:41
 * @Description:fragment抽积类
 */
public abstract class BaseFragment extends Fragment {
    private Context mContext;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mContext = context;
    }

    //加载布局
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(initLayout(), container, false);
        return view;
    }
    //加载布局
    protected abstract int initLayout();

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //加载控件
        initView();
    }
    //加载控件
    protected abstract void initView();

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //加载数据
        initData();
        //监听
        initListener();
    }
    //加载数据
    protected abstract void initData();
    //监听
    protected abstract void initListener();
    //findViewById
    public <T extends View>T find(int resId){
        return (T)getView().findViewById(resId);
    }
}
/**
 * 倒计时跳转
 * 也可以直接点击跳转
 * Handler
 */
public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private int i = 3;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (i>0){
                i--;
                textView.setText("跳转"+i);
                handler.sendEmptyMessageDelayed(0,1000);

            }else {
                //跳转
                Intent it = new Intent(MainActivity.this,LoginActivity.class);
                startActivity(it);
                finish();
                //移除
                handler.removeCallbacksAndMessages(null);
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text1);
        handler.sendEmptyMessageDelayed(0,1000);
        //点击跳转监听
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转
                Intent it = new Intent(MainActivity.this,LoginActivity.class);
                startActivity(it);
                finish();
                //移除
                handler.removeCallbacksAndMessages(null);
            }
        });

    }
}
/**
 *
 * 页面切换
 * RadioGroup+ViewPager+Fragment
 */
public class LoginActivity extends BaseActivity{
    private ViewPager viewPager;
    private RadioGroup radioGroup;
    private List<Fragment> list = new ArrayList<>();
    //初始化布局
    @Override
    protected int initLayout() {
        return R.layout.activity_login;
    }
    //初始化控件
    @Override
    protected void initView() {
        viewPager = findViewById(R.id.viewPage1);
        radioGroup = findViewById(R.id.radiogroup);

    }
    //加载数据
    @Override
    protected void initData() {
        list.add(new MovieFragment());
        list.add(new MyFragment());
        list.add(new ShezhiFragment());
        MyRadioAdapter adapter = new MyRadioAdapter(getSupportFragmentManager(),list);
        viewPager.setAdapter(adapter);

    }
    //监听
    @Override
    protected void initListener() {
        //按钮跟随页面切换
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                radioGroup.check(radioGroup.getChildAt(i).getId());
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
        //页面跟随按钮切换
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.rb1:
                        viewPager.setCurrentItem(0);
                        break;
                    case R.id.rb2:
                        viewPager.setCurrentItem(1);
                        break;
                    case R.id.rb3:
                        viewPager.setCurrentItem(2);
                        break;
                }
            }
        });
    }
}
/**
 * @Author: zhang
 * @Date: 2019/3/4 15:54
 * @Description:Activity抽基类
 */
public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(initLayout());
        initView();
        initData();
        initListener();
    }

    protected abstract int initLayout();

    protected abstract void initView();

    protected abstract void initData();

    protected abstract void initListener();

}
/**
 * @Author: zhang
 * @Date: 2019/3/4 19:16
 * @Description:页面切换,侧拉,跳转到频道管理
 * TabLayout+ViewPager+Fragment,DrawerLayout
 */
public class MovieFragment extends BaseFragment{
    private DrawerLayout drawerLayout;
    private TextView close;
    private Button open,pindao;
    private ViewPager viewPager;
    private TabLayout tabLayout;
    private List<Fragment> list = new ArrayList<>();
    private ArrayList<String> titles = new ArrayList<>();
    private MyFragmentAdapter adapter;

    //初始化布局
    @Override
    protected int initLayout() {
        return R.layout.fragment_movie;
    }

    //初始化控件
    @Override
    protected void initView() {
        drawerLayout = find(R.id.drawerLayout);
        close = find(R.id.close);
        open = find(R.id.open);
        viewPager = find(R.id.viewPage);
        tabLayout = find(R.id.tabLayout);
        pindao = find(R.id.pindao);
        //侧拉
        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

    }
    //加载数据
    @Override
    protected void initData() {
        //创建适配器
        adapter = new MyFragmentAdapter(getChildFragmentManager(),list,titles);
        viewPager.setAdapter(adapter);
        titles.add("热门影片");
        titles.add("正在上映");
        titles.add("即将上映");
        //先清空页面集合,再添加(解决冲突)
        list.clear();
        list.add(new RemenFragment());
        list.add(new ZhengzaiFragment());
        list.add(new JijiangFragment());
        //刷新适配器
        adapter.notifyDataSetChanged();
        //TabLayout绑定ViewPager
        tabLayout.setupWithViewPager(viewPager);
    }
    //监听
    @Override
    protected void initListener() {
        //打开侧拉
        open.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.LEFT);
            }
        });
        //关闭侧拉
        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawerLayout.closeDrawer(Gravity.LEFT);
            }
        });
        //侧拉监听
        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(@NonNull View view, float v) {

            }

            @Override
            public void onDrawerOpened(@NonNull View view) {

            }

            @Override
            public void onDrawerClosed(@NonNull View view) {

            }

            @Override
            public void onDrawerStateChanged(int i) {

            }
        });
        //点击频道监听   跳转
        pindao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转到频道管理页面
                Intent intent = new Intent(getActivity(), ChannelActivity.class);
                //传值
                intent.putStringArrayListExtra("key",titles);
                startActivityForResult(intent,100);
            }
        });
    }
    //接收回传
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 100 && resultCode == 200){
            ArrayList<String> newTabs = data.getStringArrayListExtra("key");
            //清除所有数据
            list.clear();
            titles.clear();
            tabLayout.removeAllTabs();
            //重新添加数据
            titles.addAll(newTabs);
            for (int i = 0; i < titles.size(); i++) {
                TabLayout.Tab tab = tabLayout.newTab();
                tab.setText(titles.get(i));
                tabLayout.addTab(tab);
                if(i == 0){
                    list.add(new RemenFragment());
                }else if (i == 1){
                    list.add(new ZhengzaiFragment());
                }else if (i == 2){
                    list.add(new JijiangFragment());
                }else {
                    list.add(new TabFragment());
                }
            }
            adapter.notifyDataSetChanged();
            tabLayout.setupWithViewPager(viewPager);
        }
    }
}
/**
 * @Author: zhang
 * @Date: 2019/3/4 19:16
 * @Description:GridView刷新加载,多条目展示
 * PullToRefreshGridView
 */
public class ShezhiFragment extends BaseFragment{
    private PullToRefreshGridView pullGrid;
    private String dataUrl = "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?page=1&count=";
    private int page = 3;
    private List<ResultBean> list = new ArrayList<>();
    private MyGridAdapter adapter;
    //布局
    @Override
    protected int initLayout() {
        return R.layout.fragment_shezhi;
    }
    //控件
    @Override
    protected void initView() {
        pullGrid = find(R.id.pull_grid);
        pullGrid.setMode(PullToRefreshBase.Mode.BOTH);
        pullGrid.setScrollingWhileRefreshingEnabled(true);
    }
    //数据
    @Override
    protected void initData() {
        adapter = new MyGridAdapter(list,getActivity());
        pullGrid.setAdapter(adapter);
        //加载数据
        if (HttpUtil.isNetConnected(getActivity())){
            getData(page);
        }else {
            Toast.makeText(getActivity(),"无网络连接",Toast.LENGTH_SHORT).show();
        }
    }
    //加载数据
    private void getData(int p) {
        //拼接接口
        String mUrl = dataUrl+p;
        //异步加载
        HttpUtil.MyAsyncTask(mUrl, new HttpUtil.MyCallBack() {
            @Override
            public void getData(String str) {
                //解析
                jsonParse(str);
            }
        });
    }
    //Gson解析
    private void jsonParse(String str) {
        list.clear();
        Gson gson = new Gson();
        ReBean fromJson = gson.fromJson(str, ReBean.class);
        list.addAll(fromJson.getResult());
        //刷新适配器
        adapter.notifyDataSetChanged();
        //关闭刷新
        pullGrid.onRefreshComplete();
    }
    //监听
    @Override
    protected void initListener() {
        pullGrid.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
                //下拉清空集合重新加载
                list.clear();
                getData(page);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
                //上拉page++加载更多数据
                page++;
                list.clear();
                getData(page);
            }
        });
    }
}


控件
<com.handmark.pulltorefresh.library.PullToRefreshGridView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pull_grid"
        android:numColumns="auto_fit"
        ></com.handmark.pulltorefresh.library.PullToRefreshGridView>
/**
 * @Author: zhang
 * @Date: 2019/3/4 19:16
 * @Description:上下拉,没网查询数据库展示数据
 * PullToReFreshListView
 */
public class RemenFragment extends BaseFragment{
    private String dataUrl = "http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=";
    private int page = 1;
    private PullToRefreshListView pull_list;
    private List<ResultBean> list = new ArrayList<>();
    private MyBaseAdapter adapter;
    private SqlDao dao;

    @Override
    protected int initLayout() {
        return R.layout.fragment_remen;
    }

    @Override
    protected void initView() {
        pull_list = find(R.id.pull_list);
        pull_list.setMode(PullToRefreshBase.Mode.BOTH);
        pull_list.setScrollingWhileRefreshingEnabled(true);
    }

    @Override
    protected void initData() {
        //创建数据库工具类
        dao = new SqlDao(getActivity());
        //创建适配器
        adapter = new MyBaseAdapter(getActivity(),list);
        pull_list.setAdapter(adapter);
        //加载数据
        getData(page);
    }
    //加载数据
    private void getData(int p) {
        final String mUrl = dataUrl + p;
        if (HttpUtil.isNetConnected(getActivity())) {
            HttpUtil.MyAsyncTask(mUrl, new HttpUtil.MyCallBack() {
                @Override
                public void getData(String str) {
                    jsonParse(str);
                    //保存到数据库
                    dao.insertData(mUrl, str);
                }
            });
        } else {
            Toast.makeText(getActivity(),"没有网络连接",Toast.LENGTH_SHORT).show();
            //查询数据库
            String s = dao.selectData(mUrl);
            jsonParse(s);
        }
    }

    private void jsonParse(String str) {
        list.clear();
        Gson gson = new Gson();
        ReBean fromJson = gson.fromJson(str, ReBean.class);
        list.addAll(fromJson.getResult());
        adapter.notifyDataSetChanged();
        pull_list.onRefreshComplete();
    }
    //监听
    @Override
    protected void initListener() {
        pull_list.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                list.clear();
                getData(page);
            }
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                page++;
                if (page > 6){
                    Toast.makeText(getActivity(),"没有数据了",Toast.LENGTH_SHORT).show();
                }else {
                    list.clear();
                    getData(page);
                }
            }
        });
    }
}
/**
 * @Author: zhang
 * @Date: 2019/3/4 19:16
 * @Description:网络请求图片Banner轮播
 */
public class JijiangFragment extends BaseFragment{
    private String picUrl = "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?page=1&count=14";
    private Banner banner;
    private List<BannerBean> list = new ArrayList<>();
    private List<String> lists = new ArrayList<>();
    @Override
    protected int initLayout() {
        return R.layout.fragment_jijiang;
    }

    @Override
    protected void initView() {
        banner = find(R.id.banner);
    }

    @Override
    protected void initData() {
        if (HttpUtil.isNetConnected(getActivity())){
            HttpUtil.MyAsyncTask(picUrl, new HttpUtil.MyCallBack() {
                @Override
                public void getData(String str) {
                    jsonParse(str);
                }
            });
        }else {
            Toast.makeText(getActivity(),"无网络连接",Toast.LENGTH_SHORT).show();
        }
    }

    private void setBanner() {

        banner.isAutoPlay(true).setDelayTime(1000).setImages(lists).setImageLoader(new ImageLoader() {
            @Override
            public void displayImage(Context context, Object path, ImageView imageView) {
                Glide.with(context).load(path).into(imageView);
            }
        }).start();
    }

    private void jsonParse(String str) {
        Gson gson = new Gson();
        MovieBean fromJson = gson.fromJson(str, MovieBean.class);
        list.addAll(fromJson.getResult());
        for (int i = 0; i < list.size(); i++) {
            lists.add(list.get(i).getImageUrl());
            setBanner();
        }
    }

    @Override
    protected void initListener() {

    }
}
/**
 * @Author: zhang
 * @Description:频道管理
 * 两个GridView条目进行相应删除添加
 */
public class ChannelActivity extends BaseActivity{
    private GridView gridTop,gridDown;
    private ImageView image_back;
    private TextView text_finish;
    private ArrayList<String> tops,downs;
    private MyPinAdapter dadapter;
    private MyPinAdapter tadapter;

    @Override
    protected int initLayout() {
        return R.layout.activity_channel;
    }

    @Override
    protected void initView() {
        gridTop = findViewById(R.id.grid_top);
        gridDown = findViewById(R.id.grid_down);
        image_back = findViewById(R.id.img_back);
        text_finish = findViewById(R.id.text_finish);
    }

    @Override
    protected void initData() {
        //上方数据
        tops = getIntent().getStringArrayListExtra("key");
        //下方数据
        downs = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            downs.add("频道"+i);
        }
        //移除重复数据
        downs.removeAll(tops);
        //创建适配器
        tadapter = new MyPinAdapter(tops,this);
        dadapter = new MyPinAdapter(downs,this);
        gridTop.setAdapter(tadapter);
        gridDown.setAdapter(dadapter);
    }

    @Override
    protected void initListener() {
        //添加上方条目监听
        gridTop.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //添加到下方集合
                downs.add(tops.get(position));
                //从上方集合删除
                tops.remove(position);
                //刷新适配器
                tadapter.notifyDataSetChanged();
                dadapter.notifyDataSetChanged();
            }
        });
        //添加下方条目监听
        gridDown.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //添加到上方集合
                tops.add(downs.get(position));
                //从下方集合删除
                downs.remove(position);
                tadapter.notifyDataSetChanged();
                dadapter.notifyDataSetChanged();
            }
        });
        //点击返回
        image_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        //点击完成
        text_finish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //回传数据
                Intent intent = new Intent();
                intent.putStringArrayListExtra("key",tops);
                setResult(200,intent);
                finish();
            }
        });
    }
}
数据库

/**
 * @Author: zhang
 * @Date: 2019/3/6 10:50
 * @Description:数据库帮助类
 */
public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
        super(context, "baway.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table news(name varchar(100),summary varchar(800))");
    }

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

    }
}


/**
 * @Author: zhang
 * @Date: 2019/3/6 10:55
 * @Description:数据库工具类
 */
public class SqlDao{
    private String table = "news";
    private MyHelper helper;

    public SqlDao(Context context) {
        helper = new MyHelper(context);
    }
    //添加数据库
    public void insertData(String name,String summary){
        SQLiteDatabase database = helper.getWritableDatabase();
        //清空数据,重新添加
        database.delete(table,"name = ?",new String[]{name});
        ContentValues values = new ContentValues();
        values.put("name",name);
        values.put("summary",summary);
        database.insert(table,null,values);
    }
    //查询数据库
    public String selectData(String name){
        String json = "";
        SQLiteDatabase database = helper.getWritableDatabase();
        Cursor query = database.query(table, null, "name = ?", new String[]{name}, null, null, null);
        while (query.moveToNext()){
            json = query.getString(query.getColumnIndex("summary"));
        }
        return json;
    }
}

猜你喜欢

转载自blog.csdn.net/zhang1885182/article/details/88289573
今日推荐