編輯:關於Android編程
0. 前言
隨著Android的發展,雖然ListView依舊重要,但RecyclerView確實越來越多的被大家使用。但顯然並不能說RecyclerView就一定優於ListView,而是應該根據不同的需求選擇最合適的進行使用。本篇將介紹我們為什麼要使用RecyclerView,並且它的基本使用方法。
1. RecyclerView的動畫效果和點擊事件
系統沒有提供ClickListener和LongClickListener,不過我們也可以自己去添加,這裡通過adapter中自己去提供回調的方式實現。
在Adapter中如下所示:
public OnItemClickListener itemClickListener;
public void setOnItemClickListener(OnItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView)itemView.findViewById(R.id.id_num);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (itemClickListener != null) {
itemClickListener.onItemClick(view, getPosition());
}
}
});
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
if (itemClickListener != null) {
itemClickListener.onItemLongClick(view, getPosition());
}
return true;
}
});
}
}
首先自行提供了點擊和長按的接口,並在內部類ViewHolder中對點擊事件進行了處理。
在Activity中的實現如下:
mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() {
@Override
public void onItemClick(final View view, int position) {
Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
mAdapter.removeData(position);
}
});
這裡簡單的單擊事件,只是Toast了位置信息,而在長按事件中,則調用了Adapter中的removeData()方法,notifyItemRemoved()方法則對該條目進行了刪除,而且是有動畫效果的。若有添加數據的需求,也是有對應的方法,即notifyItemInserted(position)。
public void removeData(int position) {
mData.remove(position);
notifyItemRemoved(position);
}
public void addData(int position) {
mData.add(position, "Insert One");
notifyItemInserted(position);
}
當然,需要為RecyclerView進行關於動畫的設置:
mRcList.setItemAnimator(newDefaultItemAnimator());
Android:Service的非綁定式的創建和生命周期
Android的Service若使用非綁定式的創建,則創建後將無法再與它取得聯系,即無法傳遞消息參數等; 所以如果希望創建後仍然與其存在聯系,那麼可以參考我的前幾篇博客《
(Android 基礎(二十四)) EditText
介紹A text field allows the user to type text into your app. It can be either single li
AndroidUI組件之GridView
java 代碼如下(簡單的知識點我會以注釋的形式講解):package com.gc.gridviewdemo; /** * @author Android將軍 */
Android Socket通信詳解
一、Socket通信簡介 Android與服務器的通信方式主要有兩種,一是Http通信,一是Socket通信。兩者的最大差異在於,http連接使用的是“請求—響
Android Native層Binder.transact()函數調用 Binder.onTransact() 函數失敗分析
Q:Android Native層Binder.transact()函數