Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發——RecyclerView特性以及基本使用方法(二)

Android開發——RecyclerView特性以及基本使用方法(二)

編輯:關於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());

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved