@ZSCDumin
2018-06-13T01:51:48.000000Z
字数 6632
阅读 508
参考代码:
package com.zscdumin.test;import android.annotation.SuppressLint;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.widget.Toast;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import java.util.ArrayList;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;public class MainActivity extends AppCompatActivity {@Bind(R.id.recycleView)RecyclerView recycleView;MyAdpter adapter;List<String> list = new ArrayList<>();@Bind(R.id.fresh)SwipeRefreshLayout fresh;@SuppressLint("HandlerLeak")private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0x101:if (fresh.isRefreshing()) {adapter.notifyDataSetChanged();fresh.setRefreshing(false);//设置不刷新}break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);list = new ArrayList<>();download();adapter = new MyAdpter(this, list, onRecyclerviewItemClickListener);LinearLayoutManager layoutmanager = new LinearLayoutManager(this);layoutmanager.setOrientation(LinearLayoutManager.VERTICAL);recycleView.setLayoutManager(layoutmanager);recycleView.setAdapter(adapter);fresh.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light,android.R.color.holo_orange_light, android.R.color.holo_red_light);fresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {@Overridepublic void onRefresh() {download();}});}private MyAdpter.OnRecyclerviewItemClickListener onRecyclerviewItemClickListener = new MyAdpter.OnRecyclerviewItemClickListener() {@Overridepublic void onItemClickListener(View v, int position) {//这里的view就是我们点击的view position就是点击的positionToast.makeText(MainActivity.this, " ItemClick点击了 " + position, Toast.LENGTH_SHORT).show();}@Overridepublic void onItemLongClickListener(View v, int position) {Toast.makeText(MainActivity.this, " ItemOnLongClick点击了 " + position, Toast.LENGTH_SHORT).show();}};public void download() {//主线程中不允许执行网络操作,开辟子线程new Thread(new Runnable() {@Overridepublic void run() {getData();}}).start();}public void getData() {OkHttpClient client = new OkHttpClient();RequestBody requestBody = new FormBody.Builder().add("code", "10001").add("password", "123456").build();Request request = new Request.Builder().url("http://115.157.192.47:8080/mes/user/getByCode").post(requestBody).build();Response response = null;try {response = client.newCall(request).execute();String responseData = response.body().string();Log.i("TAG", responseData);JSONObject jsonObject = new JSONObject(responseData);JSONObject data = jsonObject.optJSONObject("data");JSONArray roles = data.optJSONArray("roles");for (int i = 0; i < roles.length(); i++) {JSONObject item = roles.getJSONObject(i);JSONArray modules = item.optJSONArray("models");for (int j = 0; j < modules.length(); j++) {list.add(modules.getJSONObject(j).optString("name"));}}handler.sendEmptyMessage(0x101);//通过handler发送一个更新数据的标记} catch (IOException e) {e.printStackTrace();} catch (JSONException e) {e.printStackTrace();}}}
package com.zscdumin.test;import android.content.Context;import android.support.annotation.NonNull;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 java.util.List;public class MyAdpter extends RecyclerView.Adapter<MyAdpter.MyViewHolder> implements View.OnClickListener, View.OnLongClickListener {private Context context;private List<String> list;private OnRecyclerviewItemClickListener mOnRecyclerviewItemClickListener = null;public MyAdpter(Context context, List<String> list, OnRecyclerviewItemClickListener onRecyclerviewItemClickListener) {this.context = context;this.list = list;this.mOnRecyclerviewItemClickListener = onRecyclerviewItemClickListener;}@NonNull@Overridepublic MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);view.setOnClickListener(this);view.setOnLongClickListener(this);MyViewHolder viewHolder = new MyViewHolder(view);return viewHolder;}@Overridepublic void onBindViewHolder(@NonNull MyViewHolder holder, int position) {String s = list.get(position);holder.textView.setText(s);holder.imageView.setImageResource(R.mipmap.ic_launcher);holder.itemView.setTag(position);//给view设置tag以作为参数传递到监听回调方法中}@Overridepublic void onClick(View v) {//将监听传递给自定义接口mOnRecyclerviewItemClickListener.onItemClickListener(v, ((int) v.getTag()));}@Overridepublic int getItemCount() {return list.size();}@Overridepublic boolean onLongClick(View v) {mOnRecyclerviewItemClickListener.onItemLongClickListener(v, ((int) v.getTag()));return true;}static class MyViewHolder extends RecyclerView.ViewHolder {ImageView imageView;TextView textView;public MyViewHolder(View itemView) {super(itemView);imageView = itemView.findViewById(R.id.imageView);textView = itemView.findViewById(R.id.textView);}}public interface OnRecyclerviewItemClickListener {void onItemClickListener(View v, int position);void onItemLongClickListener(View v, int position);}}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v4.widget.SwipeRefreshLayoutandroid:id="@+id/fresh"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recycleView"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/imageView"android:layout_width="50dp"android:layout_height="50dp"android:src="@mipmap/ic_launcher" /><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="50dp"android:gravity="center"android:text="你好"android:textSize="20dp" /></LinearLayout>