天天看點

RecyclerView實作Listview效果

新的控件RecyclerView出現,快速實作GridView、ListView效果,

最近仔細研究的了下,實作了下Listview效果,不說了,直接上代碼:

Listview效果

MainActivity:

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private SwipeRefreshLayout mSwipeRefreshWidget;
    private List<String> mList=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget);
        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        for (int i=;i<;i++){
            mList.add(i,"資料:"+i);
        }
        recyclerviewadapter adapter=new recyclerviewadapter(getApplicationContext(),mList);
        mRecyclerView.setAdapter(adapter);
        ItemDecoration itemDecoration=new ItemDecoration();
        mRecyclerView.addItemDecoration(itemDecoration);
        mItemAnimator mItemAnimator=new mItemAnimator();
        mRecyclerView.setItemAnimator(mItemAnimator);
        //設定網格布局管理器
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

}
           

activity.xml:

這裡有使用谷歌的下拉重新整理控件,不要的話,直接删除,換成其它布局即可

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/swipe_refresh_widget"
    tools:context="meng.qiniuyun.MainActivity">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:dividerHeight="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
           

ItemDecoration:

public class ItemDecoration extends RecyclerView.ItemDecoration {
    public int it;
    public ItemDecoration(int it){
        this.it=it;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.left=it;
        outRect.right=it;
        outRect.bottom=it;
        if(parent.getChildAdapterPosition(view)==){
            outRect.top=it;
        }
    }
}
           

recyclerviewadapter:

/**
 * 擴充卡
 * Created by Administrator on 2016/10/7 0007.
 */
public class recyclerviewadapter extends RecyclerView.Adapter<recyclerviewadapter.mViewHolder> {
    private List<String> DataList=new ArrayList<>();
    private Context ctx;
    private LayoutInflater mInflater;
    public recyclerviewadapter(Context applicationContext, List<String> mList) {
        this.ctx=applicationContext;
        this.DataList=mList;
        mInflater=LayoutInflater.from(applicationContext);
    }

    @Override
    public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v=mInflater.inflate(R.layout.recyclerview_item,parent, Boolean.parseBoolean(null));
        mViewHolder mHolder=new mViewHolder(v);
        return mHolder;
    }

    @Override
    public void onBindViewHolder(mViewHolder holder, int position) {
            holder.mTextView.setText(DataList.get(position));
    }


    @Override
    public int getItemCount() {
        return DataList.size();
    }



    class mViewHolder extends RecyclerView.ViewHolder{
        private TextView mTextView;
        public mViewHolder(View itemView) {
            super(itemView);
            mTextView= (TextView) itemView.findViewById(R.id.tv_textview);
        }
    }
}
           

**有什麼問題給我留言