RecyclerView.Adapter的实现

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>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值