編輯:關於Android編程
package com.example.recyclerview; import java.util.List; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; public class MyAdapter extends RecyclerView.Adapterimplements View.OnClickListener{ private Context context; private List list; //4.1 創建接口對象 private OnChildClickListener listnener; private RecyclerView recvclerView; //4.2 添加set監聽方法,以防止與系統重名,修改方法名setOnChildListnener public void setOnChildClickListnener(OnChildClickListener listnener) { this.listnener = listnener; } /** * 3、MyAdapter的構造方法添加構造方法 */ public MyAdapter(Context context, List list) { this.context = context; this.list = list; } /** * 1、編寫viewHolder:注意再listView當中我們編寫的viewHolder是我們自定義的,但是再RecyclerView * 中viewholder被規范化了,它需要繼承自RecyclerView的viewHolder,寫好自己的ViewHolder */ public static class MyViewHolder extends RecyclerView.ViewHolder{ private TextView text; /** * 2、編寫viewHolder的構造方法 */ public MyViewHolder(View itemView) { super(itemView); //2.1找到item中的text text=(TextView) itemView.findViewById(R.id.item_text); } } /** * 3、實現它的三個抽象方法 */ /** * 返回這個adpter中一共有多少條數據 */ @Override public int getItemCount() { // TODO Auto-generated method stub return list.size(); } /** * 把現在的數據綁定到原有的viewHolder上 */ @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.text.setText(list.get(position)); } /** * 相當於在listview中,onCreatView為空時,需要去創建viewHolder */ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=LayoutInflater.from(context).inflate(R.layout.item, parent,false); //7、由adapter去實現裡面的抽象方法 view.setOnClickListener(this); return new MyViewHolder(view); } //8、抽象方法 @Override public void onClick(View v) { //8.1為了安全起見我們首先進行判斷RecyclerView不能為空並且接口對象(listener)不等於空,點擊事件才有用 //8.2在點擊時我們要獲得這個position if(recvclerView!=null&&listnener!=null){ int position=recvclerView.getChildAdapterPosition(v); listnener.onChildClick(recvclerView, v, position, list.get(position)); } } /** * 4、添加點擊事件接口(與listview不同) */ public interface OnChildClickListener{ void onChildClick(RecyclerView parent,View view,int position,/*數據模型對象*/String data); } /** * 5、連接到RecyclerView,為RecyclerView綁定數據時執行的方法 */ @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { // TODO Auto-generated method stub super.onAttachedToRecyclerView(recyclerView); this.recvclerView=recyclerView; } /** * 6、與上面方法想對應,解綁的時候執行的方法 */ @Override public void onDetachedFromRecyclerView(RecyclerView recyclerView) { // TODO Auto-generated method stub super.onDetachedFromRecyclerView(recyclerView); this.recvclerView=null; } }
在MainActivity中調用adapter的點擊事件運行
package com.example.recyclerview; import java.util.ArrayList; import java.util.List; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity implements MyAdapter.OnChildClickListener { private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recycler=(RecyclerView) findViewById(R.id.recycler); //添加100條假數據 Listlist=new ArrayList (); for(int i=0;i<100;i++){ list.add(String.format(Locale.CHINA, "第%03d條數據",i)); } adapter=new MyAdapter(this, list); recycler.setAdapter(adapter); adapter.setOnChildClickListnener(this); } /** * 點擊事件 */ @Override public void onChildClick(RecyclerView parent, View view, int position, String data) { //將點擊的內容數據打印出來 Toast.makeText(this, data, Toast.LENGTH_SHORT).show(); } }
package com.example.recyclerview; import java.util.List; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; public class MyAdapter extends RecyclerView.Adapterimplements View.OnClickListener{ private Context context; private List list; //4.1 創建接口對象 private OnChildClickListener listnener; private RecyclerView recvclerView; //4.2 添加set監聽方法,以防止與系統重名,修改方法名setOnChildListnener public void setOnChildClickListnener(OnChildClickListener listnener) { this.listnener = listnener; } /** * 3、MyAdapter的構造方法添加構造方法 */ public MyAdapter(Context context, List list) { this.context = context; this.list = list; } /** * 1、編寫viewHolder:注意再listView當中我們編寫的viewHolder是我們自定義的,但是再RecyclerView * 中viewholder被規范化了,它需要繼承自RecyclerView的viewHolder,寫好自己的ViewHolder */ public static class MyViewHolder extends RecyclerView.ViewHolder{ private TextView text; /** * 2、編寫viewHolder的構造方法 */ public MyViewHolder(View itemView) { super(itemView); //2.1找到item中的text text=(TextView) itemView.findViewById(R.id.item_text); } } /** * 3、實現它的三個抽象方法 */ /** * 返回這個adpter中一共有多少條數據 */ @Override public int getItemCount() { // TODO Auto-generated method stub return list.size(); } /** * 把現在的數據綁定到原有的viewHolder上 */ @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.text.setText(list.get(position)); } /** * 相當於在listview中,onCreatView為空時,需要去創建viewHolder */ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=LayoutInflater.from(context).inflate(R.layout.item, parent,false); //7、由adapter去實現裡面的抽象方法 view.setOnClickListener(this); return new MyViewHolder(view); } //8、抽象方法 @Override public void onClick(View v) { //8.1為了安全起見我們首先進行判斷RecyclerView不能為空並且接口對象(listener)不等於空,點擊事件才有用 //8.2在點擊時我們要獲得這個position if(recvclerView!=null&&listnener!=null){ int position=recvclerView.getChildAdapterPosition(v); listnener.onChildClick(recvclerView, v, position, list.get(position)); } } /** * 9、添加刪除的方法,從指定位置刪除 */ public void remove(int position){ list.remove(position); /** * 9.1 刪除後提醒刷新 * 注意: 調用notifyDataSetChanged();將無刪除特殊動畫效果 */ notifyItemRemoved(position); } /** * 4、添加點擊事件接口(與listview不同) */ public interface OnChildClickListener{ void onChildClick(RecyclerView parent,View view,int position,/*數據模型對象*/String data); } /** * 5、連接到RecyclerView,為RecyclerView綁定數據時執行的方法 */ @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { // TODO Auto-generated method stub super.onAttachedToRecyclerView(recyclerView); this.recvclerView=recyclerView; } /** * 6、與上面方法想對應,解綁的時候執行的方法 */ @Override public void onDetachedFromRecyclerView(RecyclerView recyclerView) { // TODO Auto-generated method stub super.onDetachedFromRecyclerView(recyclerView); this.recvclerView=null; } }
package com.example.recyclerview; import java.util.ArrayList; import java.util.List; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity implements MyAdapter.OnChildClickListener { private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recycler=(RecyclerView) findViewById(R.id.recycler); //添加100條假數據 Listlist=new ArrayList (); for(int i=0;i<100;i++){ list.add(String.format(Locale.CHINA, "第%03d條數據",i)); } adapter=new MyAdapter(this, list); recycler.setAdapter(adapter); adapter.setOnChildClickListnener(this); } /** * 點擊事件 */ @Override public void onChildClick(RecyclerView parent, View view, int position, String data) { //將點擊的內容數據打印出來 Toast.makeText(this, data, Toast.LENGTH_SHORT).show(); //調用刪除item方法 adapter.remove(position); } }
package com.example.recyclerview; import java.util.ArrayList; import java.util.List; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity implements MyAdapter.OnChildClickListener { private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recycler=(RecyclerView) findViewById(R.id.recycler); //添加100條假數據 Listlist=new ArrayList (); for(int i=0;i<100;i++){ list.add(String.format(Locale.CHINA, "第%03d條數據",i)); } adapter=new MyAdapter(this, list); /** * 在java代碼中使用LinearLayoutManager,不在布局文件中使用 */ LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);//(垂直水平,是否翻轉呈現布局) GridLayoutManager gridLayoutManager=new GridLayoutManager(this, 3);//(列數) //GridLayoutManager可以設置摸個item的樣式 gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) {//占多少列 if(position==0){ return 3; //第一行占三列 } return 1;//默認占一列 } }); recycler.setLayoutManager(gridLayoutManager);//在xml布局中可以刪掉對linearLayoutManager的引用 recycler.setAdapter(adapter); adapter.setOnChildClickListnener(this); } /** * 點擊事件 */ @Override public void onChildClick(RecyclerView parent, View view, int position, String data) { //將點擊的內容數據打印出來 Toast.makeText(this, data, Toast.LENGTH_SHORT).show(); //調用刪除item方法 adapter.remove(position); } }
如果自定義的類型需要通過Intent或IPC進行傳遞,就需要對數據進行序列化處理。 下面是Android官網上的一個例子 public class MyP
工具代碼:package com.xiaolei;import java.io.File;import java.util.HashMap;import java.uti
為了簡化 Android 的開發力度,Google 決定將重點建設 Android Studio 工具。Google 會在今年年底停止支持其他集成開發環境,比如 Ecli
Autotools工具的構成1、autoscanautoscan是用來掃描源代碼目錄生成configure.san文件的,configure.san包含了系統配置的基本選