服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android购物分类效果实现

Android购物分类效果实现

2022-08-24 14:29FanRQ_ Android

这篇文章主要为大家详细介绍了Android购物分类效果的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android购物分类效果展示的具体代码,供大家参考,具体内容如下

SecondActivity.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class SecondActivity extends AppCompatActivity{
  private ViewPager mPager;
  private RadioGroup mRadioGroup;
 
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second);
 
     mPager = findViewById(R.id.pager);
     mRadioGroup = findViewById(R.id.group);
 
     mPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
       @Override
       public Fragment getItem(int position) {
         Fragment fragment=null;
 
         switch (position){
           case 0:
             fragment = new Afrag();
             break;
           case 1:
             fragment = new Bfrag();
             break;
           case 2:
             fragment = new Cfrag();
             break;
         }
         return fragment;
       }
 
       @Override
       public int getCount() {
         return 3;
       }
     });
 
     mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
       @Override
       public void onCheckedChanged(RadioGroup radioGroup, int i) {
         switch (i){
           case R.id.r1:
             mPager.setCurrentItem(0);
             break;
           case R.id.r2:
             mPager.setCurrentItem(1);
             break;
           case R.id.r3:
             mPager.setCurrentItem(2);
             break;
         }
       }
     });
  }
}

secondActivity.xml

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
 
  <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="13"/>
 
  <RadioGroup
    android:id="@+id/group"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal">
 
    <RadioButton
      android:id="@+id/r1"
      android:layout_width="wrap_content"
      android:layout_weight="1"
      android:layout_height="match_parent"
      android:button="@null"
      android:gravity="center"
      android:text="首页"/>
 
    <RadioButton
      android:id="@+id/r2"
      android:layout_width="wrap_content"
      android:layout_weight="1"
      android:layout_height="match_parent"
      android:button="@null"
      android:gravity="center"
      android:text="分类"/>
 
    <RadioButton
      android:id="@+id/r3"
      android:layout_width="wrap_content"
      android:layout_weight="1"
      android:layout_height="match_parent"
      android:button="@null"
      android:gravity="center"
      android:text="购物车"/>
  </RadioGroup>
</LinearLayout>

Afrag.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class Afrag extends Fragment{
  private RecyclerView mRecyclerView;
  public String urlString="http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4 ";
 
  @Nullable
  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = View.inflate(getActivity(), R.layout.afrag, null);
    mRecyclerView = view.findViewById(R.id.rv);
    initData();
 
    return view;
  }
 
  private void initData() {
    OkHttps okHttps = OkHttps.getInstance();
 
    okHttps.doGet(urlString, new OkHttps.OkCallback() {
      @Override
      public void onResponse(String json) { //瀑布流
 
        PubuBean pubuBean = new Gson().fromJson(json,PubuBean.class);
        List<PubuBean.DataBean> results = pubuBean.getData();
 
        PubuAdapter pubuAdapter = new PubuAdapter(getActivity());
        pubuAdapter.setDatas(results);
        mRecyclerView.setAdapter(pubuAdapter);
 
        StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(manager);
      }
 
      @Override
      public void onFailure(Exception e) {
 
      }
    });
 
  }
}

afrag.xml

?
1
2
3
4
5
6
7
8
9
10
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
 
  <android.support.v7.widget.RecyclerView
    android:id="@+id/rv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
 
</LinearLayout>

PubuAdapter.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class PubuAdapter extends RecyclerView.Adapter<PubuAdapter.ViewHolder>{
  private Context mContext;
  ArrayList<PubuBean.DataBean> list;
 
  public PubuAdapter(Context context) {
    mContext = context;
    list = new ArrayList<>();
  }
 
  public void setDatas(List<PubuBean.DataBean> datas) {
    list.addAll(datas);
 
  }
  @NonNull
  @Override
  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = View.inflate(mContext, R.layout.pbitem, null);
    ViewHolder holder = new ViewHolder(view);
    return holder;
  }
 
  @Override
  public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
 
    holder.mTextView.setText(list.get(position).getName());
    Glide.with(mContext).load(list.get(position).getPic_url()).into(holder.mImageView);
 
 
  }
 
  @Override
  public int getItemCount() {
    return list.size();
  }
 
 
 
  public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView mImageView;
    TextView mTextView;
    public ViewHolder(View itemView) {
      super(itemView);
      mImageView = itemView.findViewById(R.id.image);
      mTextView = itemView.findViewById(R.id.t1);
 
    }
  }
}

Bfrag.java

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class Bfrag extends Fragment{
  private RecyclerView mRecyclerView;
  LeftAdapter adapter;
  String urlString="http://www.zhaoapi.cn/product/getCatagory";
  String urlString2="http://www.zhaoapi.cn/product/getProductCatagory";
  private RecyclerView mRecyclerView2;
 
  @Nullable
  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = View.inflate(getActivity(), R.layout.bfrag, null);//分类页面
 
    mRecyclerView = view.findViewById(R.id.rv1); //左侧列表
 
    mRecyclerView2 = view.findViewById(R.id.rv2); //右
    initData();
 
    return view;
  }
 
  private void initData() {
    OkHttps okHttps = OkHttps.getInstance();
 
    okHttps.doGet(urlString, new OkHttps.OkCallback() {
      @Override
      public void onResponse(String json) { //瀑布流
 
        LeftBean leftBean = new Gson().fromJson(json,LeftBean.class);
        List<LeftBean.DataBean> results = leftBean.getData();
 
        adapter = new LeftAdapter(getActivity());
        adapter.setDatas(results);
 
        mRecyclerView.setAdapter(adapter);
 
 
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
 
        adapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() {
          @Override
          public void onItemClick(int position) {
 
            //Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show();
            rigth(position);
          }
        });
      }
 
      @Override
      public void onFailure(Exception e) {
 
      }
    });
  }
 
  public void rigth(int position){
    HashMap<String, String> map = new HashMap<>();
    map.put("cid",position+1+"");
 
    OkHttps.getInstance().doPost(urlString2,map,new OkHttps.OkCallback() {
      @Override
      public void onResponse(String json) {
 
        RightBean rightBean = new Gson().fromJson(json,RightBean.class);
        List<RightBean.DataBean> results = rightBean.getData();
 
        RightAdapter rightAdapter = new RightAdapter(getActivity());
        rightAdapter.setDatas(results);
 
        mRecyclerView2.setAdapter(rightAdapter);
 
        mRecyclerView2.setLayoutManager(new GridLayoutManager(getActivity(),3));
      }
 
      @Override
      public void onFailure(Exception e) {
 
      }
    });
  }
}

bfrag.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<android.support.v7.widget.RecyclerView
    android:id="@+id/rv1"
    android:layout_width="0dp"
    android:layout_weight="2"
    android:layout_height="match_parent"/>
 
  <android.support.v7.widget.RecyclerView
    android:id="@+id/rv2"
    android:layout_width="0dp"
    android:layout_weight="10"
    android:layout_height="match_parent"/>
 
</LinearLayout>

LeftAdapter.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.ViewHolder>{
  private Context mContext;
  ArrayList<LeftBean.DataBean> list;
 
  public LeftAdapter(Context context) {
    mContext = context;
    list = new ArrayList<>();
  }
 
  public void setDatas(List<LeftBean.DataBean> datas) {
    list.addAll(datas);
 
  }
 
  public interface OnItemClickListener{  //自定义接口回调设置点击事件
    void onItemClick(int position);
  }
 
  private OnItemClickListener mOnItemClickListener;
 
  public void setOnItemClickListener(OnItemClickListener onItemClickListener){
    mOnItemClickListener=onItemClickListener;
  }
 
  @NonNull
  @Override
  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = View.inflate(mContext, R.layout.leftitem, null);
    ViewHolder holder = new ViewHolder(view);
    return holder;
  }
 
  @Override
  public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
 
    holder.mTextView.setText(list.get(position).getName());
 
    holder.itemView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        int position1 = holder.getLayoutPosition();
        mOnItemClickListener.onItemClick(position1);
      }
    });
  }
 
  @Override
  public int getItemCount() {
    return list.size();
  }
 
 
 
  public class ViewHolder extends RecyclerView.ViewHolder {
    TextView mTextView;
    public ViewHolder(View itemView) {
      super(itemView);
      mTextView = itemView.findViewById(R.id.text1);
 
    }
  }
}

RightAdapter.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.ViewHolder>{
  private Context mContext;
  ArrayList<RightBean.DataBean> list;
 
  public RightAdapter(Context context) {
    mContext = context;
    list = new ArrayList<>();
  }
 
  public void setDatas(List<RightBean.DataBean> datas) {
    list.addAll(datas);
 
  }
  @NonNull
  @Override
  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = View.inflate(mContext, R.layout.rightitem, null);
    ViewHolder holder = new ViewHolder(view);
    return holder;
  }
 
  @Override
  public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.mTextView.setText(list.get(position).getName());
    Glide.with(mContext).load(list.get(position).getList().get(position).getIcon()).into(holder.mImageView);
  }
 
  @Override
  public int getItemCount() {
    return list.size();
  }
 
 
 
  public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView mImageView;
    TextView mTextView;
 
    public ViewHolder(View itemView) {
      super(itemView);
      mImageView = itemView.findViewById(R.id.image1);
      mTextView = itemView.findViewById(R.id.text2);
 
    }
  }
}

OkHttps.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
public class OkHttps {
  Handler handler;
  private final OkHttpClient mOkHttpClient;
  private static OkHttps mOkHttps;
 
  private OkHttps() {
    handler = new Handler(Looper.getMainLooper());
 
    LoggingInterceptor loggingInterceptor = new LoggingInterceptor(); //日志拦截器
    mOkHttpClient = new OkHttpClient.Builder()
        .addInterceptor(loggingInterceptor)  //设置日志拦截器
        .connectTimeout(5000, TimeUnit.MILLISECONDS)
        .readTimeout(5000,TimeUnit.MILLISECONDS)
        .writeTimeout(5000,TimeUnit.MILLISECONDS)
        .build();
 
  }
 
  public static OkHttps getInstance(){
    if (mOkHttps==null){
      synchronized (OkHttps.class){
        if (mOkHttps==null){
          return mOkHttps=new OkHttps();
        }
      }
    }
    return mOkHttps;
  }
 
  public interface OkCallback{
    void onResponse(String json);
 
    void onFailure(Exception e);
 
  }
 
  public void doPost(String url, Map<String,String> map, final OkCallback okCallback){
    FormBody.Builder builder = new FormBody.Builder();
    if (map!=null){
      for (String key:map.keySet()){
        builder.add(key,map.get(key));
      }
    }
 
    FormBody formBody = builder.build();
 
    final Request request = new Request.Builder()
        .post(formBody)
        .url(url)
        .build();
 
    Call call = mOkHttpClient.newCall(request);
    call.enqueue(new Callback() {
      @Override
      public void onFailure(Call call, final IOException e) {
        if (okCallback!=null){
          handler.post(new Runnable() {
            @Override
            public void run() {
 
              okCallback.onFailure(e);
            }
          });
        }
      }
 
      @Override
      public void onResponse(Call call, Response response) throws IOException {
 
        try {
          if (response!=null && response.isSuccessful()){
            final String json = response.body().string();
            handler.post(new Runnable() {
              @Override
              public void run() {
                if (okCallback!=null){
 
                  okCallback.onResponse(json);
                  return;
                }
              }
            });
          }
        }catch (IOException e){
          e.printStackTrace();
        }
        if (okCallback!=null){
          okCallback.onFailure(new Exception("网络异常"));
        }
      }
    });
 
  }
  public void doGet(String url, final OkCallback okCallback){
    Request request = new Request.Builder()
        .url(url)
        .build();
 
    Call call = mOkHttpClient.newCall(request);
    call.enqueue(new Callback() {
      @Override
      public void onFailure(Call call, final IOException e) {
        if (okCallback != null) {
          //切换到主线程
          handler.post(new Runnable() {
            @Override
            public void run() {
              okCallback.onFailure(e);
            }
          });
        }
      }
 
      @Override
      public void onResponse(Call call, Response response) throws IOException {
 
        try {
          if (response != null && response.isSuccessful()) {
            final String json = response.body().string();
            handler.post(new Runnable() {
              @Override
              public void run() {
                if (okCallback != null) {
                  okCallback.onResponse(json);
                }
 
              }
            });
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    });
  }
}

依赖

?
1
2
3
4
implementation 'com.google.code.gson:gson:2.8.5'
  implementation 'com.squareup.okhttp3:okhttp:3.12.0'
  implementation 'com.android.support:recyclerview-v7:27.1.1'
  implementation 'com.github.bumptech.glide:glide:3.7.0'

LoggingInterceptor.java //拦截器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class LoggingInterceptor implements Interceptor {
 @Override
 public Response intercept(Chain chain) throws IOException {
  //拿到Request对象
  Request request = chain.request();
 
  long t1 = System.nanoTime();
  System.out.println(" request = " + String.format("Sending request %s on %s%n%s",
      request.url(), chain.connection(), request.headers()));
 
  //拿到Response对象
  Response response = chain.proceed(request);
 
  long t2 = System.nanoTime();
  //得出请求网络,到得到结果,中间消耗了多长时间
  System.out.println("response " + String.format("Received response for %s in %.1fms%n%s",
      response.request().url(), (t2 - t1) / 1e6d, response.headers()));
  return response;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/FanRQ_/article/details/84346984

延伸 · 阅读

精彩推荐
  • AndroidAndroid编程之客户端通过socket与服务器通信的方法

    Android编程之客户端通过socket与服务器通信的方法

    这篇文章主要介绍了Android编程之客户端通过socket与服务器通信的方法,结合实例形式分析了Android基于socket通讯的具体步骤与相关使用技巧,具有一定参考借鉴...

    randyjiawenjie11662021-04-15
  • AndroidAndroid中实现根据资源名获取资源ID

    Android中实现根据资源名获取资源ID

    这篇文章主要介绍了Android中实现根据资源名获取资源ID,本文讲解了使用文件名获取资源ID的方法,需要的朋友可以参考下...

    Android开发网11482021-03-12
  • Androidjava实现静默安装apk

    java实现静默安装apk

    本文给大家分享的是如何实现偷偷的把一个安卓apk应用安装到手机上,而且不显示确认框,主要是通过反射来实现,好了,小伙伴们仔细看下代码吧,有需...

    99re10202021-03-15
  • AndroidAndroid应用开发之简易、大气音乐播放器实现专辑倒影效果

    Android应用开发之简易、大气音乐播放器实现专辑倒影效果

    这篇文章主要介绍了Android应用开发之简单、大气音乐播放器实现专辑倒影效果,对android音乐播放器感兴趣的朋友可以参考下...

    itheimafeng6502021-04-08
  • AndroidAndroid中viewPager使用指南

    Android中viewPager使用指南

    这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很...

    mrr6122021-05-12
  • AndroidAndroid编程使用缓存优化ListView的方法

    Android编程使用缓存优化ListView的方法

    这篇文章主要介绍了Android编程使用缓存优化ListView的方法,涉及ListView针对sd卡缓存及内存缓存的优化技巧,需要的朋友可以参考下...

    傅荣康8442021-04-27
  • AndroidAndroid 管理Activity中的fragments

    Android 管理Activity中的fragments

    为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋友可以了解下哦...

    Android开发网7752020-12-31
  • Android详谈Android编译命令

    详谈Android编译命令

    本文给大家详细介绍了Android中常用的编译命令、用法以及注意事项,非常的详细,有需要的小伙伴可以参考下...

    Android开发网11202021-07-24