频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
使用android中的recylerView控件案例
2018-04-13 12:57:27         来源:grow_to的博客  
收藏   我要投稿

使用android中的recylerView控件案例

在使用recylerView的时候,我一直感觉这个控件使用起来比较复杂,所以要总结一下有关于这个控件的相关的知识,其实只要好好剖析一下安卓中有关于控件的知识会发现还是比较容易使用的。
1.添加依赖关系
首先,根据我个人的经验来感觉的话,如果要使用一个控件,首先要看这个控件是否存在于相关的包中,如果不存在的化就要在依赖中使用这个包,对于recyclerView也是一样的,首先要在和android项目中的app目录下的build.grandle文件里面添加相关的依赖关系:

compile 'com.android.support:recyclerview-v7:26.1.0'

其中依赖关系后面的数字代表使用的版本号,根据具体的使用可以进行调整。

2.在布局文件也就是相关的xml文件中使用recyclerView的控件,然后设置它的相关的属性,具体的属性和其它的ui控件差不多。相关的实例:

    
    

3.定义recylerView控件的内部条目的样式,这里就可以有各种多样的设置了,自己可以自己定义相关的控件:



    
    
    

4.然后就是配置recyclerView的相关的适配器了,配置的方法也是很简单的主要是实现RecyclerView.Adapter类,然后重载其中的onCreateViewHolder,onBindViewHolder,getItemCount方法,然后因为其中要用到ViewHolder所以要写一个ViewHolder的类用来存放临时的数据,其中每一个viewHolde就是recyclerView中的一个条目。相关的代码如下:

package com.example.dell_gxr.week10;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

/**
 * Created by dell_gxr on 2017/12/7.
 */

public  class PersonAdapter extends RecyclerView.Adapter {

    private List mList;
    private PersonDatabase mDBHelper;
    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        final View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.main_item, parent, false);
        final PersonViewHolder holder = new PersonViewHolder(view);
        final int position = holder.getAdapterPosition();
        Log.d("PersonAdapter","on create number: " + Integer.toString(position));



        return holder;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        Log.d("PersonAdapter","on bind number: " + Integer.toString(position));
        Person current = mList.get(position);
        holder.name.setText(current.getName());
        holder.birthday.setText(current.getBirthday());
        holder.gift.setText(current.getGift());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final View view1 = LayoutInflater.from(v.getContext())
                        .inflate(R.layout.modify_dialog, null);
                TextView textView1 = view1.findViewById(R.id.modify_dialog_name_textView);
                TextView textView2 = view1.findViewById(R.id.modify_dialog_number_textView);
                textView1.setText("姓名:" + mList.get(position).getName());
                textView2.setText("手机号码:" + mList.get(position).getNumber());
                EditText editText1 = view1.findViewById(R.id.modify_dialog_birthday_EditText);
                EditText editText2 = view1.findViewById(R.id.modify_dialog_gift_EditText);
                editText1.setText(mList.get(position).getBirthday());
                editText2.setText(mList.get(position).getGift());
                AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
                builder.setTitle("快乐每天!");
                builder.setView(view1);
                builder.setCancelable(true);
                builder.setPositiveButton("保存修改", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        EditText editText1 = view1.findViewById(R.id.modify_dialog_birthday_EditText);
                        EditText editText2 = view1.findViewById(R.id.modify_dialog_gift_EditText);

                        if(TextUtils.isEmpty(editText1.getText().toString())) {
                            mList.get(position).setBirthday("");
                        } else {
                            mList.get(position).setBirthday(editText1.getText().toString());
                        }
                        if(TextUtils.isEmpty(editText2.getText().toString())) {
                            mList.get(position).setGift("");
                        } else {
                            mList.get(position).setGift(editText2.getText().toString());
                        }
                        notifyDataSetChanged();
                        Toast.makeText(view1.getContext(), "修改成功", Toast.LENGTH_SHORT).show();
                        mDBHelper.update(mList.get(position));
                    }
                });
                builder.setNegativeButton("放弃修改", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
                builder.show();
            }
        });
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(final View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
                builder.setTitle("是否删除?");
                builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        mDBHelper.delete(mList.get(position));
                        mList.remove(position);
                        notifyDataSetChanged();
                        Toast.makeText(v.getContext(), "成功删除", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(v.getContext(), "取消删除", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.show();
                return false;
            }
        });
    }

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

    PersonAdapter(List tList, PersonDatabase dbHelper) {
        super();
        mList = tList;
        mDBHelper = dbHelper;
    }

    class PersonViewHolder extends RecyclerView.ViewHolder {
        TextView name;
        TextView birthday;
        TextView gift;

        public PersonViewHolder(View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.item_name_main);
            birthday = itemView.findViewById(R.id.item_birthday_main);
            gift = itemView.findViewById(R.id.item_gift_main);

        }
    }
}

5.最后就是在主活动为相应的recyclerView使用这个适配器了,注意要在使用适配器的过程中设置相应的Layout,这样才能使得recylerView正常显示:

public void initItem() {

        RecyclerView recyclerView = findViewById(R.id.person_recyclerView);
        PersonAdapter personAdapter = new PersonAdapter(allList, dbHelper);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);

        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(personAdapter);
        recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    }
点击复制链接 与好友分享!回本站首页
上一篇:Android开发之Android性能优化总述
下一篇:Android安卓平板设备获取唯一标识
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站