RecyclerView.Adapter的实现

来源:互联网 发布:如何改变网络的拥堵 编辑:程序博客网 时间:2024/05/22 13:04

MainActivity.class

package gaga.erlan.apps.aiyesoft.com.gaga;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.support.v7.app.AppCompatActivity;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);              Intent it = super.getIntent(); //取得当前的Intent        String skill_title = it.getStringExtra("skill_title");        String skill_phrase = it.getStringExtra("skill_phrase");        TextView select = (TextView)findViewById(R.id.select);        select.setText(skill_title);        EditText about = (EditText)findViewById(R.id.about);        about.setText(skill_phrase);    }     public void select(View v) {        Intent intent=new Intent();        intent.setClass(MainActivity.this, SelectActivity.class);        startActivity(intent);    }}


SelectAdapter.class

package gaga.erlan.apps.aiyesoft.com.gaga.adapter;import android.content.Context;import android.net.Uri;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.RecyclerView.Adapter;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.TextView;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.view.SimpleDraweeView;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import gaga.erlan.apps.aiyesoft.com.gaga.R;/** * Created by Administrator on 2017/11/28. */public  class SelectAdapter extends RecyclerView.Adapter<SelectAdapter.ViewHolder> implements View.OnClickListener {    private JSONArray list;    private Context content;    private String skill_name,skill_phrase,skill_gif;    private ViewHolder myHolder;
   //声明这个接口的变量
    private OnItemClickListener mOnItemClickListener = null;   //在MyAdapter中定义如下接口,模拟ListView的OnItemClickListener:    public  interface OnItemClickListener {        void OnItemClick(View view, int position);    }    public SelectAdapter(Context content) {        super();        this.content = content;    }    public void setMyAdapterList(JSONArray list) {        this.list = list;    }   //在onCreateViewHolder()中为每个item添加点击事件    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        Fresco.initialize(content);        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.gridviewwitem, parent, false);        ViewHolder vh = new ViewHolder(view);        //将创建的View注册点击事件        view.setOnClickListener(this);        return vh;    }    //注意上面调用接口的onItemClick()中的v.getTag()方法,这需要在onBindViewHolder()方法中设置和item的position    @Override    public void onBindViewHolder(ViewHolder holder, int position) {         myHolder = (ViewHolder) holder;        if (myHolder != null) {            try {                JSONObject tem_obj = (JSONObject) list.get(position);                 skill_name = tem_obj.getString("skill_name");                 skill_phrase = tem_obj.getString("skill_phrase");                 skill_gif = tem_obj.getString("skill_gif");                if (skill_name != null) myHolder.grid_title.setText(skill_name);                if (skill_phrase != null) myHolder.grid_phrase.setText(skill_phrase);                if (skill_gif != null)myHolder.grid_gif.setImageURI(Uri.parse(skill_gif));                 } catch (JSONException e) {                e.printStackTrace();            }         }         holder.itemView.setTag(position);    }
    //将点击事件转移给外面的调用者    @Override    public void onClick(View v) {        if (mOnItemClickListener != null) {            //注意这里使用getTag方法获取position            mOnItemClickListener.OnItemClick(v,(int)v.getTag());        }    }
    //最后暴露给外面的调用者,定义一个设置Listener的方法()    public void setOnItemClickListener(OnItemClickListener listener) {        this.mOnItemClickListener = listener;    }    @Override    public int getItemCount() {        if (list == null) return 0;        return list.length();    }    public static class ViewHolder extends RecyclerView.ViewHolder {        TextView grid_title;        TextView grid_phrase;        SimpleDraweeView grid_gif;        public ViewHolder(View view) {            super(view);            grid_title = (TextView) view.findViewById(R.id.grid_title);            grid_phrase = (TextView) view.findViewById(R.id.grid_phrase);            grid_gif = (SimpleDraweeView) view.findViewById(R.id.grid_image);        }    }}
SelectActivity.class
package gaga.erlan.apps.aiyesoft.com.gaga;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.xutils.view.annotation.ViewInject;import org.xutils.x;import java.util.HashMap;import java.util.List;import java.util.Map;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.TextView;import android.widget.Toast;import gaga.erlan.apps.aiyesoft.com.gaga.adapter.SelectAdapter.OnItemClickListener;import gaga.erlan.apps.aiyesoft.com.gaga.adapter.SelectAdapter;import static gaga.erlan.apps.aiyesoft.com.gaga.R.id.grid_title;/** * Created by Administrator on 2017/11/21. */public class SelectActivity extends AppCompatActivity {    private static JSONArray dataArr;    private static JSONObject recordObj;    SharedPreferences sharedPreferences;    private String skill_gif, skill_phrase, skill_title;    @ViewInject(R.id.select_gridview)    private RecyclerView recycleView;    private SelectAdapter myAdapter;    //List容器包含项目列表要填充的数据    private List<Map<JSONObject, Object>> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_select);        x.view().inject(this);        getMessage();        myAdapter = new SelectAdapter(this);        recycleView.setLayoutManager(new LinearLayoutManager(this));        recycleView.setAdapter(myAdapter);
       //Activity中调用点击方法        myAdapter.setOnItemClickListener(new OnItemClickListener() {            @Override            public void OnItemClick(View view, int position) {                TextView grid_title = (TextView)view.findViewById(R.id.grid_title);                TextView grid_phrase = (TextView)view.findViewById(R.id.grid_phrase);               // Toast.makeText(SelectActivity.this,grid_title.getText().toString()+"++++++++++++"+grid_phrase.getText().toString(),Toast.LENGTH_LONG).show();              /*  switch (position) {                    case 0:                        Toast.makeText(SelectActivity.this,"这是第一个"+grid_title.getText().toString()+"++++++++++++"+grid_phrase.getText().toString(),Toast.LENGTH_SHORT).show();                        break;                    case 1:                        Toast.makeText(SelectActivity.this,"这是第二个"+grid_title.getText().toString()+"++++++++++++"+grid_phrase.getText().toString(),Toast.LENGTH_SHORT).show();                        break;                }*/                Intent intent = new Intent();                intent.setClass(SelectActivity.this, MainActivity.class);                intent.putExtra("skill_title",grid_title.getText().toString());                intent.putExtra("skill_phrase",grid_phrase.getText().toString());                startActivity(intent);            }        });    }    public void getMessage() {        sharedPreferences = getSharedPreferences(AppConfig.userdata, 0);        String token = sharedPreferences.getString("token", "");        HashMap<String, String> paramMap = new HashMap<String, String>();        paramMap.put("token", token);//根据实际需求添加相应键值对        AppHttp.post("/api/main/daytodo", paramMap, new AppHttp.AppHttpCallBlack() {            @Override            public void AppHttpPostBlack(JSONObject jsonObj, Object dataObj, Exception ex) {                if (dataObj != null) {                    if (dataObj instanceof JSONArray) {                        JSONArray tem_array = (JSONArray) dataObj;                        myAdapter.setMyAdapterList(tem_array);                        myAdapter.notifyDataSetChanged();                    }                    try {                        String code = jsonObj.getString("code");                        JSONArray dataArr = jsonObj.getJSONArray("data");                        for (int j = 0; j < dataArr.length(); j++) {                            JSONObject recordObj = dataArr.getJSONObject(j);                             skill_gif = recordObj.getString("skill_gif");                             skill_phrase = recordObj.getString("skill_phrase");                             skill_title = recordObj.getString("skill_title");                            SharedPreferences.Editor editor = sharedPreferences.edit();                            editor.putString(AppConfig.code, code);                            editor.putString(AppConfig.skill_gif, skill_gif);                            editor.putString(AppConfig.skill_phrase, skill_phrase);                            editor.putString(AppConfig.skill_title, skill_title);                            editor.commit();                        }                    } catch (JSONException e) {                        e.printStackTrace();                    }                }            }        });    }}

item布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:fresco="http://schemas.android.com/apk/res-auto"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="wrap_content">    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:orientation="vertical">        <com.facebook.drawee.view.SimpleDraweeView            android:id="@+id/grid_image"            android:layout_width="200dp"            android:layout_height="wrap_content"            fresco:viewAspectRatio="1.75"            android:layout_centerHorizontal="true"            android:layout_marginTop="20dp"/>        <TextView            android:id="@+id/grid_title"            android:text="看电影"            android:textSize="20dp"            android:layout_marginLeft="20dp"            android:textColor="#000000"            android:layout_width="125dp"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/grid_phrase"            android:text="一起安静的看电影-今日有200对看电影"            android:textColor="#000000"            android:textSize="15dp"            android:layout_marginLeft="20dp"            android:layout_width="125dp"            android:layout_height="20dp" />    </LinearLayout></LinearLayout>
RecyclerView布局
<?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:orientation="vertical">    <android.support.v7.widget.RecyclerView        android:id="@+id/select_gridview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:gravity="center"        android:horizontalSpacing="10dp"        android:numColumns="2"        android:stretchMode="columnWidth"        android:verticalSpacing="10dp" /></LinearLayout>






原创粉丝点击