編輯:關於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條假數據
List list=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條假數據
List list=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條假數據
List list=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);
}
}
Android開發之使用Parcelable對自定義的類進行序列化
如果自定義的類型需要通過Intent或IPC進行傳遞,就需要對數據進行序列化處理。 下面是Android官網上的一個例子 public class MyP
根據Android Layout XM文件自動生成自定義View代碼的工具類
工具代碼:package com.xiaolei;import java.io.File;import java.util.HashMap;import java.uti
Android Studio 常用功能介紹
為了簡化 Android 的開發力度,Google 決定將重點建設 Android Studio 工具。Google 會在今年年底停止支持其他集成開發環境,比如 Ecli
Android系統開發(4)——Autotools
Autotools工具的構成1、autoscanautoscan是用來掃描源代碼目錄生成configure.san文件的,configure.san包含了系統配置的基本選