Giter Site home page Giter Site logo

smuyyh / easyadapter Goto Github PK

View Code? Open in Web Editor NEW
167.0 167.0 55.0 138 KB

Android 轻量级适配器,简化使用,适应所有的AbsListView、RecyclerView。支持HeaderView与FooterView~

License: Apache License 2.0

Java 100.00%
adapter android listview recyclerview

easyadapter's Introduction

EasyAdapter

Android万能适配器,通吃所有的AbsListView、RecyclerView。

添加依赖

buildscript {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
    dependencies {
        ...
    }
}
dependencies {
    implementation 'com.github.smuyyh:EasyAdapter:1.3.0'
}

用法

step1

// ListView
public class ListViewAdapter extends EasyLVAdapter<Bean> {

    public ListViewAdapter(Context context, List<Bean> list, int... layoutIds) {
        super(context, list, layoutIds);
    }

    @Override
    public void convert(EasyLVHolder holder, int position, final Bean bean) {
        holder.setText(R.id.tv, bean.name)
              .setText(R.id.tv2, bean.name2)
              .setImageResource(R.id.img, context.getResource().getDrawable(bean.imgRes));
    }

    @Override
    public int getLayoutIndex(int position, Bean item) {
        // 若需多样式布局,则重写该方法
        if (position % 2 == 0)
            return 1;
        else return 0;
    }
}

// RecyclerView
public class RecyclerViewAdapter extends EasyRVAdapter<Bean> {
    public RecyclerViewAdapter(Context context, List<Bean> list, int... layoutIds) {
        super(context, list, layoutIds);
    }

    @Override
    protected void onBindData(EasyRVHolder viewHolder, final int position, Bean item) {
        viewHolder.setText(R.id.tv, item.name);
        // 自定义点击可覆盖父类的setOnItemClickListener
        /*viewHolder.getItemView().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, position+"---", Toast.LENGTH_SHORT).show();
            }
        });*/
        viewHolder.setImageUrl(R.id.iv, "https://img.25pp.com//ppnews/zixun_img/6fc/096/1444271700253231.jpg");
    }

    @Override
    public int getLayoutIndex(int position, Bean item) {
        if (position % 2 == 0)
            return 0;
        else return 1;
    }
}

step2

// 1、若需要调用adapter.setImageUrl,可以在Application配置全局统一回调
AdapterImageLoader.init(new AdapterImageLoader.ImageLoader() {
    @Override
    public void loadImage(Context context, String url, ImageView view) {
        Glide.with(context)
                .load(url)
                .into(view);
    }
});

// 2、若adapter需要单独定制ImageLoader,比如placeHolder,则重写该方法,以替换全局初始化的ImageLoader
@Override
public AdapterImageLoader.ImageLoader getImageLoader() {
    return new AdapterImageLoader.ImageLoader() {
        @Override
        public void loadImage(Context context, String url, ImageView view) {
            Glide.with(context)
                    .load(url)
                    .override(10, 10)
                    .into(view);
        }
    };
}

step3

ListView lv = (ListView) findViewById(R.id.lv);
lv.setAdapter(new ListViewAdapter(this, list, R.layout.item_list_view_1, R.layout.item_list_view_2));

数据操作

EasyXXAdapter提供以下方法,便于对List数据的增删改。

    boolean addAll(List<T> list);

    boolean addAll(int position, List<T> list);

    void add(T data);

    void add(int position, T data);

    void clear();

    boolean contains(T data);

    T getData(int index);

    void modify(T oldData, T newData);

    void modify(int index, T newData);

    boolean remove(T data);

    void remove(int index);

    // RV 独有 点击事件
    void setOnItemClickListener(OnItemClickListener<T> itemClickListener);

    // RV 独有 长按事件
    void setOnItemLongClickListener(OnItemLongClickListener<T> itemLongClickListener);

easyadapter's People

Contributors

caption-dylan avatar smuyyh avatar xiaobinzu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyadapter's Issues

关于获取position

protected void onBindData(EasyRVHolder viewHolder, int position, MessageListInfo item) {}
为什么我获取不到当前item的position,都是获取的不正确的position。求解答??

UPDATE

PLEASE UPDATE THIS PROJECT

通过Adapter.setClick实现点击监听事件没有效果。

    trackListAdapter.setClick(new BaseRVAdapter.OnItemClick<Track.TrackContent>() {
        private boolean isLike = false;

        @Override
        public void onItemClick(View v, int vId, int position, Track.TrackContent item) {
            int num = item.totalLaud;
            TextView likeTv = (TextView) v.findViewById(R.id.track_person_list_item_like_tv);
            ImageView likeIv = (ImageView) v.findViewById(R.id.track_person_list_item_like_iv);
            switch (vId) {
                case R.id.track_person_list_item_like_tv:
                    if (isLike) {
                        num--;
                        likeTv.setText(num + "");
                        likeIv.setImageResource(R.mipmap.like);
                        isLike = false;
                    } else {
                        num++;
                        likeTv.setText(num + "");
                        likeIv.setImageResource(R.mipmap.like_green);
                        isLike = true;
                    }
                    break;
            }
        }
    });

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.