您的位置:首页 > 编程语言

搜索商品点击图片切换线性布局和网格布局(代码有问题)

2017-12-19 14:22 441 查看
网格activity布局(layout_griditem)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher_round" />

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/img"
android:layout_marginTop="10dp"
android:text="标题"
android:textSize="24sp" />

<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_marginTop="10dp"
android:text="价格"
android:textColor="#F00"
android:textSize="18sp" />

</RelativeLayout>
线性activity布局(layout_listitem)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher_round" />

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/img"
android:layout_marginTop="10dp"
android:text="标题"
android:textSize="24sp" />

<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_marginTop="10dp"
android:text="价格"
android:textColor="#F00"
android:textSize="18sp" />

</RelativeLayout>
主布局(activity_main)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bwie.sc.MainActivity">

<Button
android:id="@+id/btnShopCar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="搜索商品"
android:textColor="#000"
android:textSize="22sp" />

<ImageView
android:id="@+id/changeImg"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_marginTop="15dp"
android:src="@drawable/list" />

<View
android:id="@+id/v1"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="60dp"
android:background="#000" />

<EditText
android:id="@+id/edSear"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_below="@id/v1" />

<Button
android:id="@+id/btnSear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/v1"
android:layout_toRightOf="@id/edSear"
android:text="搜索" />

<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/btnSear"
android:layout_marginTop="10dp"></com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>
用于Ok封装工具类的拦截器(Intercept)

package com.bwie.sc.utils;

import java.io.IOException;

import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

/**
* author:Created by ZhangPengFei on 2017/12/19.
*/

public class Intercept implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
HttpUrl url=original.url().newBuilder()
.addQueryParameter("source","android")
.build();
//添加请求头
Request request = original.newBuilder()
.url(url)
.build();
return chain.proceed(request);
}
}


Ok封装工具类(OKHttpUtils)

package com.bwie.sc.utils;

/**
* author:Created by ZhangPengFei on 2017/12/19.
*/

import android.os.Handler;
import android.util.Log;

import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
* author:Created by WangZhiQiang on 2017/12/5.
*/

public class OKHttpUtils {
private static OKHttpUtils okHttpUtils;
private static Handler handler = new Handler();

//私有化构造方法
public OKHttpUtils() {

}

/**
* 获取OKhttpClient实例化
*/
public static OKHttpUtils getInstance() {
if (null == okHttpUtils) {
synchronized (OKHttpUtils.class) {
if (null == okHttpUtils) {
okHttpUtils = new OKHttpUtils();
}
}
}
return okHttpUtils;
}

/**
* 封装的异步Get请求
*/
public void doGet(String path, Map<String, String> map, final IOkHttpUtils okHttpCallBack) {
//创建一个字符串容器
StringBuilder sb = null;
if (map.size() == 0) {
if (null == sb) {
sb = new StringBuilder();
sb.append(path);
}
} else {
for (String key : map.keySet()) {
if (null == sb) {
sb = new StringBuilder();
sb.append(path);
sb.append("?");
} else {
sb.append("&");
}
sb.append(key).append("=").append(map.get(key));
}
}

//System.out.println("分类 : "+path + sb.toString());

OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new Intercept())//使用拦截器
.build();
Request request = new Request.Builder()
.url(sb.toString())
.get()
.build();
//OKHttp 网络
Call call = okHttpClient.newCall(request);
//异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求失败
Log.e("SKN", "OK请求失败");
okHttpCallBack.onFailed(e.getMessage());
}

@Override
public void onResponse(Call call, final Response response) throws IOException {
final String str = response.body().string();
//请求成功
handler.post(new Runnable() {
@Override
public void run() {
Log.e("WWWW", "请求成功" + str);
okHttpCallBack.onSuccess(str);
}
});
}
});
}
}
Ok封装工具类的接口(IOkHttpUtils)

package com.bwie.sc.utils;

/**
* author:Created by ZhangPengFei on 2017/12/19.
*/

public interface IOkHttpUtils {

void onSuccess(String str);

void onFailed(String message);

}


XRecyclerView的适配器(MySearchAdapter)

package com.bwie.sc.a
4000
dapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bwie.sc.R;
import com.bwie.sc.bean.SearchBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
* author:Created by ZhangPengFei on 2017/12/19.
*/

public class MySearchAdapter extends RecyclerView.Adapter<MySearchAdapter.ViewHolder> {

private Context context;
private List<SearchBean.DataBean> data;
private int z;

public MySearchAdapter(Context context, List<SearchBean.DataBean> data, int z) {
this.context = context;
this.data = data;
this.z = z;
}

@Override
public MySearchAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (z == 1) {
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_listitem, parent, false);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
} else {
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_griditem, parent, false);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
}
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ImageLoader.getInstance().displayImage(data.get(position).getImages(), holder.img);
holder.title.setText(data.get(position).getTitle());
holder.price.setText(data.get(position).getPrice() + "");
}

@Override
public int getItemCount() {
return data.size();
}

class ViewHolder extends RecyclerView.ViewHolder {

ImageView img;
TextView title;
TextView price;

public ViewHolder(View itemView) {
super(itemView);
img = itemView.findViewById(R.id.img);
title = itemView.findViewById(R.id.title);
price = itemView.findViewById(R.id.price);
}
}

}
主布局代码(MainActivity)

package com.bwie.sc;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

import com.bwie.sc.adapter.MySearchAdapter;
import com.bwie.sc.bean.SearchBean;
import com.bwie.sc.interfaces.ISearchPresenter;
import com.bwie.sc.presenter.SearchPresenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

public class MainActivity extends AppCompatActivity implements ISearchPresenter {

private ImageView changeImg;
private EditText edSear;
private Button btnSear;
private XRecyclerView xRecyclerView;
private SearchPresenter searchPresenter;
private int page = 1;
private int z;
private boolean flag;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();//初始化视图
searchPresenter = new SearchPresenter(this);
btnSear.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
searchPresenter.receive(edSear.getText().toString(), page + "");
}
});

}

//初始化视图
private void initView() {
changeImg = (ImageView) findViewById(R.id.changeImg);
edSear = (EditText) findViewById(R.id.edSear);
btnSear = (Button) findViewById(R.id.btnSear);
xRecyclerView = (XRecyclerView) findViewById(R.id.xRecyclerView);
}

@Override
public void onSuccess(final List<SearchBean.DataBean> data) {
/**
* 默认线性布局
*/
xRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false));
xRecyclerView.setAdapter(new MySearchAdapter(MainActivity.this, data, 1));
//图片的点击事件
changeImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (flag) {
//更换线性布局
changeImg.setImageResource(R.drawable.list);
xRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false));
xRecyclerView.setAdapter(new MySearchAdapter(MainActivity.this, data, 2));
flag = false;
} else {
//更换网格布局
changeImg.setImageResource(R.drawable.grid);
xRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 2, LinearLayoutManager.VERTICAL, false));
xRecyclerView.setAdapter(new MySearchAdapter(MainActivity.this, data, 1));
flag = true;
}
}
});
}

@Override
public void onFailed() {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: