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>
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>
阅读全文
0 0
- RecyclerView.Adapter的实现
- RecyclerView 的 RecyclerView.Adapter 通用版的实现
- 实现RecyclerView 的通用Adapter
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- RecyclerView万能的Adapter
- RecyclerView的万能Adapter
- RecyclerView.Adapter的封装
- 漂亮的Adapter模式-体会RecyclerView的设计实现
- RecyclerView通用adapter以及item点击事件的实现
- MultiType-Adapter 优雅的实现RecyclerVIew中的复杂布局
- android之实现万能适配RecyclerView的adapter
- RecyclerView的基本使用、RecyclerView万能adapter及多条目的实现
- RecyclerView的Adapter的抽取
- RecyclerView的Adapter最佳实战
- Recyclerview Adapter 的简单封装
- RecyclerView的Adapter万能适配包
- RecyclerView.Adapter 的简单封装
- 通用的RecyclerView Adapter适配器
- 实战:抓取某只基金历史净值数据
- fortran 002 稍微复杂一点的输入(时间序列读取)
- 在IDEA中使用MyBatis Generator逆向工程生成代码
- node.js的body-parser中间件
- 网络攻击导致的数据泄露,为啥要企业来背锅?
- RecyclerView.Adapter的实现
- Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图
- 常见乱码场景及解决方式
- mysql 重复记录查询与删除
- CentOS 7设置网络开机自动连接
- Windows 2003 Server配置IIS服务器(ASP, ASP.NET)全功略
- postconstruct\preconstruct注解
- css3 实现正方体3D旋转
- Java历史简介-不看会后悔