国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

一篇日志弄清RecycleView

2019-11-06 09:38:20
字體:
供稿:網(wǎng)友

主要是分兩部分

首先一部分是一個Activity里,負責初始化UI控件,準備數(shù)據(jù)Datas

package com.example.sjy.recycleview;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.ActionBarActivity;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.DividerItemDecoration;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.MenuItem;import java.util.ArrayList;import java.util.List;/** * Created by sjy_1993 on 2017/2/28. */public class MainActivity extends ActionBarActivity {    PRivate RecyclerView mRecycleView;    private List<String> mDatas;    private SimpleAdapter mAdapter;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initDatas();        initViews();        //進行adapter的設置           Context,數(shù)據(jù)        mAdapter = new SimpleAdapter(mDatas, this);        mRecycleView.setAdapter(mAdapter);        //設置布局        mRecycleView.setLayoutManager(new LinearLayoutManager(this,                LinearLayoutManager.VERTICAL, false));        //設置添加刪除動畫        mRecycleView.setItemAnimator(new DefaultItemAnimator());        //設置分割線        mRecycleView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));    }    private void initDatas() {        mDatas = new ArrayList<>();        for (int i = 'A'; i < 'z'; i++) {            mDatas.add("" + (char) i);//為什么前面加“”        }    }    private void initViews() {        //綁定視圖        mRecycleView = (RecyclerView) findViewById(R.id.recyclerview);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    public boolean onOptionsItemSelected(MenuItem item) {        int id = item.getItemId();        switch (id) {            case R.id.pubuView: //瀑布流就是每個item不一樣這里是進入瀑布流界面                Intent intent = new Intent(MainActivity.this,StaggeredGridActivity.class);                startActivity(intent);                break;            case R.id.gridView:                  //3列相冊布局                mRecycleView.setLayoutManager(new GridLayoutManager(this, 3));                break;            case R.id.lineView:                  //仿照ListView                mRecycleView.setLayoutManager(new LinearLayoutManager(this));                break;            case R.id.action_add:            addData(1);                break;            case R.id.action_delete:           deleteData(1);                break;        }        return super.onOptionsItemSelected(item);    }}Activity的布局文件如下

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerview"        android:layout_width="match_parent"        android:layout_height="match_parent">    </android.support.v7.widget.RecyclerView></LinearLayout>

這里是item的布局界面

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:background="#55ff0000"    android:layout_width="match_parent"    android:layout_margin="3dp"    android:layout_height="72dp">    <TextView        android:id="@+id/text_num"        android:gravity="center"        android:background="@drawable/item_bg"        android:layout_width="match_parent"        android:layout_height="match_parent" /></FrameLayout>

這里是Adapter界面

package com.example.sjy.recycleview;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.RecyclerView.ViewHolder;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;/** * Created by sjy_1993 on 2017/2/28. */public class SimpleAdapter extends RecyclerView.Adapter<MyViewHolder>{    private LayoutInflater mInflater; //inflate      item的布局    private List<String> mDatas;    private Context mContext;    public interface OnItemClickListener{        void onItemClick(View view,int position);        void onItemLongClick(View view,int position);    }    private OnItemClickListener mOnItemClickListener;    public void setOnItemClickListener(OnItemClickListener listener){        this.mOnItemClickListener = listener;    }        //構(gòu)造方法  自己創(chuàng)建的    public SimpleAdapter(List<String> datas, Context context ) {        this.mDatas = datas;        this.mContext = context;       mInflater = LayoutInflater.from(context);    }    //實現(xiàn)未實現(xiàn)的方法    @Override    public int getItemCount() {        return mDatas.size();    }    //綁定ViewHolder里的數(shù)據(jù)    @Override    public void onBindViewHolder(final MyViewHolder holder, final int position) {            //綁定數(shù)據(jù)顯示在item里        holder.tv.setText(mDatas.get(position)); //設置監(jiān)聽事件  回調(diào)        holder.itemView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                mOnItemClickListener.onItemClick(holder.itemView,position);            }        });        //longClick        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View view) {                mOnItemClickListener.onItemLongClick(holder.itemView,position);                return false;            }        });    }    //創(chuàng)建一個VIewHolder    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {       //得到上一層的View        View view = mInflater.inflate(R.layout.simple_item,parent,false);            //內(nèi)容提供者        MyViewHolder viewHolder = new MyViewHolder(view); //  得到上一層的View里        return viewHolder;    }    public void addData(int pos){        mDatas.add("Insert one");        notifyItemChanged(pos);    }    public void deleteData(int pos)    {        mDatas.remove(pos);        notifyItemRemoved(pos);    }}    //自己寫的ViewHolder    class MyViewHolder extends ViewHolder{        //當前Item所有的控件    TextView tv;    //arg0             相當于rootView    public MyViewHolder(View arg0){         super(arg0);        //進行View的初始化        tv = (TextView) arg0.findViewById(R.id.text_num);    }}

添加刪除,增加動畫

在標題欄上設置,此時在menu -main.xml菜單里設置

 <item     android:id="@+id/action_delete"     android:orderInCategory="100"     android:title="Delete"     android:icon="@drawable/ic_menu_delete"     app:showAsAction="ifRoom"/> <item     android:id="@+id/action_add"     android:orderInCategory="100"     android:title="Add"     android:icon="@drawable/ic_menu_add"     app:showAsAction="ifRoom"     /> <!--把圖標顯示在ActionBar上面

如果要設置監(jiān)聽的話,要自己寫監(jiān)聽的內(nèi)部類文件見上方SimpleAdapter里。最后要在主文件里寫上如下監(jiān)聽代碼

   //設置監(jiān)聽    mAdapter.setOnItemClickListener(new SimpleAdapter.OnItemClickListener() {        @Override        public void onItemClick(View view, int position) {            Toast.makeText(MainActivity.this,"您點擊的位置是"+position,Toast.LENGTH_SHORT).show();        }        @Override        public void onItemLongClick(View view, int position) {            Toast.makeText(MainActivity.this,"您點擊的位置是"+position,Toast.LENGTH_SHORT).show();        }    });}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 廉江市| 泗阳县| 大石桥市| 鄯善县| 岳西县| 静宁县| 大石桥市| 云阳县| 新绛县| 工布江达县| 康马县| 襄垣县| 集贤县| 祁东县| 台北市| 乌兰县| 安义县| 新安县| 织金县| 淮南市| 扬中市| 温州市| 巴彦淖尔市| 三门县| 和政县| 潞城市| 吴江市| 长丰县| 桑日县| 新丰县| 临漳县| 内丘县| 福泉市| 元阳县| 大竹县| 阜宁县| 林芝县| 库尔勒市| 西宁市| 涪陵区| 双流县|