工具类 适配器 fragment页面

HttpUtils 工具类
public class HttpUtils {
public static boolean isNetworkConnected(Context context) {
if (context != null) {
//获取连接管理器
ConnectivityManager mConnectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
//判断网络是否可用
return mNetworkInfo.isAvailable();
}
}
return false;
}

public static void httpAsynTask(String strUrl, final CallBackString backString) {
    new AsyncTask<String, Integer, String>() {
        @Override
        protected String doInBackground(String... strings) {
            return httpGet(strings[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //接口回调的方法
            backString.getData(s);
        }
    }.execute(strUrl);
}
//接口================================
public interface CallBackString {
    void getData(String s);
}
//==============================================

public static String httpGet(String strUrl) {
    //设置url
    try {
        URL url = new URL(strUrl);
        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置为get请求
        connection.setRequestMethod("GET");
        //设置连接主机超时时间
        connection.setConnectTimeout(5000);
        //设置从主机读取数据超时
        connection.setReadTimeout(5000);
        //得到数据
        InputStream stream = connection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        //拼接数据
        StringBuilder builder = new StringBuilder();
        String str = "";
        while ((str = reader.readLine()) != null) {
            builder.append(str);
        }
        //关闭连接
        connection.disconnect();
        //返回数据
        return builder.toString();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

}
app继承Application
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
String path = Environment.getExternalStorageDirectory().getPath() + “/RiKao13”;
File file = new File(path);

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
            .memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
            .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
            .threadPoolSize(3)//配置加载图片的线程数
            .threadPriority(1000)//配置线程的优先级
            .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
            .diskCacheFileCount(50)//配置sdcard缓存文件的数量
            .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
            .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
            .build();//完成
    ImageLoader.getInstance().init(config);
}

}
适配器
public class MyAdapter extends BaseAdapter {
private Context context;
private List<JsonBean.DataBean> list;

public MyAdapter(Context context, List<JsonBean.DataBean> list) {
    this.context = context;
    this.list = list;
}

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

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}
@Override
public int getItemViewType(int position) {
    return position % 3;
}

@Override
public int getViewTypeCount() {
    return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    switch (getItemViewType(position)) {
        case 0:
            ViewHolder1 holder1;

            if (convertView == null) {
                convertView = View.inflate(context,R.layout.item1, null);
                holder1 = new ViewHolder1();
                holder1.image1 = convertView.findViewById(R.id.image1);
                holder1.text1 = convertView.findViewById(R.id.text1);
                convertView.setTag(holder1);
            } else {
                holder1 = (ViewHolder1) convertView.getTag();
            }
            JsonBean.DataBean bean =list.get(position);
            //================

            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .cacheInMemory(true)//让图片进行内存缓存
                    .cacheOnDisk(true)//让图片进行sdcard缓存
                    /*.showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误
                    .showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片
                    .showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片*/
                    .build();
            //参数1:加载的图片地址
            //参数2:将图片设置到那个图片控件上面
            //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)
            ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s(), holder1.image1, options);
            //================
            holder1.text1.setText(bean.getTitle());
            break;
        case 1:
            ViewHolder2 holder2;

            if (convertView == null) {
                convertView = View.inflate(context, R.layout.item2, null);
                holder2 = new ViewHolder2();

                holder2.text2 = convertView.findViewById(R.id.text2);
                holder2.text3 = convertView.findViewById(R.id.text3);
                holder2.image2 = convertView.findViewById(R.id.image2);
                convertView.setTag(holder2);
            } else {
                holder2 = (ViewHolder2) convertView.getTag();
            }
            JsonBean.DataBean bean2 = list.get(position);
            holder2.text2.setText(bean2.getTitle());
            holder2.text3.setText(bean2.getAuthor_name());
            DisplayImageOptions options1 = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true) .build();
            ImageLoader.getInstance().displayImage(bean2.getThumbnail_pic_s02(), holder2.image2, options1);
            break;
        case 2:
            ViewHolder3 holder3;

            if (convertView == null) {
                convertView = View.inflate(context, R.layout.item3, null);
                holder3 = new ViewHolder3();
                holder3.text4 = convertView.findViewById(R.id.text4);
                convertView.setTag(holder3);
            } else {
                holder3 = (ViewHolder3) convertView.getTag();
            }
            JsonBean.DataBean bean3 = list.get(position);
            holder3.text4.setText(bean3.getAuthor_name());
            break;
    }
    return convertView;
}

class ViewHolder1 {
    ImageView image1;
    TextView text1;
}

class ViewHolder2 {
    ImageView image2;
    TextView text2,text3;
}

class ViewHolder3 {
    TextView text4;

}

}
MyPagerAdapter
public class MyPagerAdapter extends FragmentPagerAdapter {
private ArrayList list1;
private ArrayList title;

public MyPagerAdapter(FragmentManager fm, ArrayList<Fragment> list1, ArrayList<String> title) {
    super(fm);
    this.list1 = list1;
    this.title = title;
}

@Override
public Fragment getItem(int i) {
    return list1.get(i);
}

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

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

}
bean类省略
列表页面
public class Fragment01 extends BaseFragment {
String str = “http://www.xieast.com/api/news/news.php?page=1”;
private PullToRefreshListView listView;
private List<JsonBean.DataBean> list;
private MyAdapter adapter;

private Cursor cursor;
private Dao dao;
private TabLayout tabLayout;
private ArrayList<Fragment> list1;
private ArrayList<String> title;
private ViewPager pager;

@Override
protected int bindLayout() {
    return R.layout.frag1;
}

@Override
protected void initView() {
    listView = bindView(R.id.pullto);
    //设置模式  BOTH:支持上拉加载 下拉刷新   PULL_FROM_END:仅支持加载更多    PULL_FROM_START:下拉刷新
    listView.setMode(PullToRefreshBase.Mode.BOTH);
    listView.setScrollingWhileRefreshingEnabled(true);
    dao = new Dao(getActivity());
    tabLayout = bindView(R.id.tablayout);
    pager = bindView(R.id.pager);
}
@Override
protected void initData() {
    list1 = new ArrayList<>();
    list1.add(new Frag1());
    list1.add(new Frag2());
    title = new ArrayList<>();
    title.add("视频");
    title.add("科技");
    pager.setAdapter(new MyPagerAdapter(getActivity().getSupportFragmentManager(),list1,title));
    tabLayout.setupWithViewPager(pager);
    ///判断有没有网络
    if (HttpUtils.isNetworkConnected(getActivity())) {
        //如果 有网就请求网络
        HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
            @Override
            public void getData(String s) {
                gsonJX(s);
            }
        });
    } else {
        //如果没有网络 就读取数据库的数据
        //请求数据库
        cursor = dao.query("person", null, null, null, null, null, null);

        list=new ArrayList<JsonBean.DataBean>();
        if (cursor.moveToFirst()){
            do {
                String uniquekey= cursor.getString(cursor.getColumnIndex("uniquekey"));
                String title= cursor.getString(cursor.getColumnIndex("title"));
                String date= cursor.getString(cursor.getColumnIndex("date"));
                String category= cursor.getString(cursor.getColumnIndex("category"));
                String author_name= cursor.getString(cursor.getColumnIndex("author_name"));
                String url= cursor.getString(cursor.getColumnIndex("url"));
                String thumbnail_pic_s= cursor.getString(cursor.getColumnIndex("thumbnail_pic_s"));
                String thumbnail_pic_s02= cursor.getString(cursor.getColumnIndex("thumbnail_pic_s02"));
                String thumbnail_pic_s03= cursor.getString(cursor.getColumnIndex("thumbnail_pic_s03"));

                list.add(new JsonBean.DataBean(uniquekey,title,date,category,author_name,url,thumbnail_pic_s,thumbnail_pic_s02,thumbnail_pic_s03));
            }while (cursor.moveToNext());
        }
        Toast.makeText(getActivity(),"哎呀 没网了",Toast.LENGTH_LONG).show();
        cursor.close();
        //设置适配器
        adapter = new MyAdapter(getActivity(), list);
        listView.setAdapter(adapter);
    }
}
private void gsonJX(String s) {
    Gson gson = new Gson();
    JsonBean json = gson.fromJson(s, JsonBean.class);
    list = json.getData();
    //判断有没有数据 有数据就不添加
    if (dao.query("person", null, null, null, null, null, null).moveToFirst()) {


    } else {
        //如果没有就添加
        for (JsonBean.DataBean bean : list) {
            ContentValues values = new ContentValues();
            values.put("uniquekey", bean.getUniquekey());
            values.put("title", bean.getTitle());
            values.put("date", bean.getDate());
            values.put("category", bean.getCategory());
            values.put("author_name", bean.getAuthor_name());
            values.put("url", bean.getUrl());
            values.put("thumbnail_pic_s", bean.getThumbnail_pic_s());
            values.put("thumbnail_pic_s02", bean.getThumbnail_pic_s02());
            values.put("thumbnail_pic_s03", bean.getThumbnail_pic_s03());
            dao.add("person", null, values);
        }

    }

    adapter = new MyAdapter(getActivity(), list);
    listView.setAdapter(adapter);
}
@Override
protected void bindEvent() {
    listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
            if (HttpUtils.isNetworkConnected(getActivity())) {
                //如果 有网就请求网络
                HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        gsonJX(s);
                    }
                });
            }else{
                Toast .makeText(getActivity(),"哎呀 没网了",Toast.LENGTH_LONG).show();
            }
            listView.onRefreshComplete();

        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            if (HttpUtils.isNetworkConnected(getActivity())) {
                //如果 有网就请求网络
                HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        Gson gson = new Gson();
                        JsonBean json = gson.fromJson(s, JsonBean.class);
                        List<JsonBean.DataBean> data2= json.getData();
                        list.addAll(data2);
                        adapter.notifyDataSetChanged();

                    }
                });
            }else{
                Toast .makeText(getActivity(),"哎呀 没网了",Toast.LENGTH_LONG).show();

            }
            listView.onRefreshComplete();
        }
    });
}

}

Fragment02表格页面
public class Fragment02 extends BaseFragment {
String str=“http://www.xieast.com/api/news/news.php?page=1”;
private List<JsonBean.DataBean> list;
private MydridAdapter mygridAdapter;
private GridView gridView;

@Override
protected void initView() {
    gridView = bindView(R.id.gridview);
}

@Override
protected void initData() {
    HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
        @Override
        public void getData(String s) {
            Gson gson=new Gson();
            JsonBean bean = gson.fromJson(s, JsonBean.class);
            list = bean.getData();
            mygridAdapter = new MydridAdapter(getActivity(),list);
            gridView.setAdapter(mygridAdapter);
        }
    });
}
@Override
protected void bindEvent() {

}
@Override
protected int bindLayout() {
    return R.layout.frag2;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 购物车页面是一个常见的电商应用中的重要页面,通过展示用户选择的商品清单,方便用户查看、编辑和结算购物车中的商品。 Android Studio 是一款专业的 Android 开发工具,提供了丰富的组件和功能,可以轻松实现购物车页面的设计与开发。 具体实现购物车页面可以参考以下步骤: 1. 创建布局文件:在 Android Studio 中创建一个新的布局文件,用于展示购物车页面的UI。可以使用各种组件如RecyclerView、TextView、Button等来显示商品信息、数量、价格等。 2. 绑定数据:在购物车页面的 Activity 或 Fragment 中,使用适配器(Adapter)将购物车数据绑定到布局文件中的组件上。适配器可以继承RecyclerView.Adapter类,实现数据的绑定与渲染。 3. 实现交互功能:为购物车页面添加相应的交互功能,比如点击商品跳转到商品详情页面、增加或减少商品数量、删除商品等。可以使用事件监听器来实现这些功能,并更新数据适配器以刷新页面。 4. 数据管理:购物车页面需要实时反映用户在其它页面(比如商品列表页面)上的操作,例如添加商品到购物车或从购物车中删除商品。可以通过数据库或全局变量来管理购物车数据的增删改查。 5. 结算功能:购物车页面通常提供结算功能。可以添加一个“结算”按钮,当用户点击按钮时,将购物车中的商品信息传递给后台服务器进行结算处理,并跳转到支付页面或者显示支付二维码。 通过以上步骤,您可以在 Android Studio 中实现一个基础的购物车页面。当然,具体的实现还取决于您的需求和设计风格,可以根据需要进行个性化的定制和优化。希望对您有所帮助! ### 回答2: 购物车页面是电商应用中非常常见的一个功能,Android Studio 是一款非常强大的集成开发环境,可以用来开发各种类型的 Android 应用程序。在 Android Studio 中实现购物车页面也是非常简单的。 首先,我们需要在 Android Studio 中创建一个新的项目,并添加一个购物车页面的布局文件。这可以通过在项目视图中右键点击“res”文件夹,选择“New”->“Layout resource file”来完成。在布局文件中,我们可以使用各种 Android 布局和控件来构建购物车页面的界面,比如列表视图、文本视图、按钮等。 接下来,我们需要在购物车页面的 Java 文件中,编写逻辑代码来实现购物车的功能。首先,我们可以使用 RecyclerView 来展示购物车中的商品列表,这可以通过在布局文件中添加一个 RecyclerView 控件,并在 Java 文件中创建一个适配器来实现。适配器可以帮助我们展示购物车中的商品信息,并响应用户的操作,比如删除商品、修改商品数量等。 在购物车页面中,我们还可以添加其他的功能,比如结算购物车、清空购物车等。这些功能可以通过添加按钮和事件监听器来实现。当用户点击结算按钮时,我们可以计算购物车中商品的总价,并跳转到支付页面;当用户点击清空购物车按钮时,我们可以清空购物车中的商品列表。 除了基本的购物车功能,我们还可以通过与后端服务器进行交互,实现更复杂的功能,比如根据用户的收货地址计算运费、根据库存信息判断商品是否可购买等。这可以通过使用网络请求库来实现,比如 Retrofit 或 Volley,通过向服务器发送请求,接收服务器返回的数据,并进行相应的处理。 综上所述,通过使用 Android Studio ,我们可以方便地实现购物车页面的开发。通过布局文件和逻辑代码的编写,我们可以展示购物车中的商品列表,并实现各种购物车的功能。同时,我们还可以通过与后端服务器的交互,实现更复杂的功能。使用 Android Studio,开发购物车页面变得更加简单、快捷。 ### 回答3: Android Studio 是一款非常流行的用于开发Android应用程序的集成开发环境,而CSDN是国内知名的技术博客社区。在Android Studio中实现购物车页面,可以按照以下步骤进行操作: 1. 首先,创建一个新的Android项目,并在布局文件中设计购物车页面的UI。可以使用LinearLayout、RelativeLayout等布局容器,添加TextView、ImageView、Button等控件实现页面的显示和交互。 2. 在Java代码中,定义购物车页面的逻辑,包括商品的添加、删除、数量的增减等功能。可以使用ArrayList或HashMap等数据结构存储购物车中的商品信息,并通过Adapter将数据与列表控件关联起来,实现商品列表的展示。 3. 添加监听器来处理用户的操作。例如,通过监听商品列表中删除按钮的点击事件,实现删除商品的功能;通过监听商品数量增减按钮的点击事件,实现购物数量的调整等。 4. 在购物车页面中,可以添加一些统计功能,如购物车中商品的总数量和总价格等。在Java代码中,对购物车中的商品进行遍历,并计算商品数量和价格的总和,在界面上展示出来。 5. 如果需要与后端服务器进行交互,可以使用网络请求库(如OkHttp、Retrofit等)发送请求。例如,将购物车中的商品信息发送给服务器进行后续处理,或者从服务器获取商品信息进行展示。 以上是使用Android Studio实现购物车页面的基本步骤。通过合理设计UI布局,处理用户的操作和展示数据,就可以实现一个功能完善的购物车页面。在CSDN中可以找到更多关于Android开发的教程和案例,帮助开发者更好地实现购物车功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值