这是indexloc提供的服务,不要输入任何密码
Skip to content

dusunboy/TagSelectorView

 
 

Repository files navigation

TagSelectorView

TagSelectorView v2.0

download blog

be free to contact me by the blog above or email wang1ran@163.com

gif

Setup

repositories {
   jcenter()
}

dependencies {
    compile 'com.rock.android:tagselector:xxx'//version code
}

#Usage

  • in xml
<com.rock.android.tagselector.views.TagSelectView
        android:id="@+id/tagSelectView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
  • Activity

  • 2.0版本使用了adapter模式,使用配置起来更加优雅流畅,自定义一个实现com.rock.android.tagselector.interfaces.BaseAdapter的类之后调用tagSelectView.setAdapter(tagSelectorAdapter);即可.

TagSelectView tagSelectView = (TagSelectView) findViewById(R.id.tagSelectView);

dataList = new ArrayList<>();

        int count = 2;
        List<DataBean> dataBeanList = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            dataBeanList.add(new MyDataBean("item A" + i));
        }

        dataList.add(new Tags()
                .setTags(dataBeanList));



        List<DataBean> dataBeanList1 = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            dataBeanList1.add(new MyDataBean("item B" + i));
        }

        dataList.add(new Tags()
                .setTags(dataBeanList1));


        int countc = 10;
        List<DataBean> dataBeanList2 = new ArrayList<>();
        for (int i = 0; i < countc; i++) {
            dataBeanList2.add(new MyDataBean("item C" + i));
        }

        dataList.add(new Tags()
                .setTags(dataBeanList2));

        tagSelectorAdapter = new SimpleAdapter(dataList, this);
        tagSelectView.setAdapter(tagSelectorAdapter);
        tagSelectView.setWrapperHeight(FrameLayout.LayoutParams.MATCH_PARENT);
  • com.rock.android.tagselector.interfaces.BaseAdapter

ITagSelector接口用来定义每个tab所弹出的view, 并且在你的Adapter的getDropDownView()方法的中返回,鼓励自定义实现ITagSelector接口,如果你比较懒,库中已经帮你定义了一个基本的单选listSimpleSingleSelectListView,就像1.2.2.3的一样。

public interface BaseAdapter {

    //tab的个数
    int getCount();

    /**
     * 注意 此View 中必须包含一个id 为theTextView的TextView
     * */
    View getTabView(int position);

    ITagSelector getDropDownView(int position);

    Object getItem(int tabPosition,int selectorPosition);

    boolean getChangeAfterClicked(int tabPosition);

    String getTagName(int tabPosition,int selectorPosition);
}

data source must extend the DataBean

由于ITagSelector不再定义数据结构,所以现在不需要强行继承DataBean,把宝贵的单继承留给使用者. 因此你需要自行为ItagSelector定义数据结构,无论是在ItagSelector的实现类还是BaseAdapter中(ItagSelector提供了getListAdapter()方法)都可以随心所欲定义数据. ps:如果你比较懒,也可以直接使用DataBean

  • 为某一个tab下的view添加一条数据
tagSelectView.getTabView(1).getTagSelectorView().insert(0, new MyDataBean("im new"));
tagSelectView.getTabView(1).getTagSelectorView().refresh();
  • get the selected tag
tagSelectView.setOnTagSelectedListener(new TagSelectView.OnTagSelectedListener() {
            @Override
            public void onTagSelected(int selectorListPosition, int tabPosition) {
                LogUtil.e("onTagSelected", "selected==" + selectorListPosition + "===tab===" + tabPosition);

                DataBean dataBean = dataList.get(tabPosition).tags.get(selectorListPosition);
                MyDataBean d = (MyDataBean) dataBean;
                LogUtil.e("onTagSelected", "data name===" + d.name);

                DataBean dataBean1 = (DataBean) tagSelectorAdapter.getItem(tabPosition,selectorListPosition);
                        //(DataBean) tagSelectView.getTabView(tabPosition).getTagSelectorView().getCurrentItem(selectorListPosition);
                LogUtil.e("onTagSelected", "data1 name===" + dataBean1.name);
                //do something like request the network

            }
        });

  • listening the tab
tagSelectView.setOnTagViewStatusChangedListener(new TagSelectView.OnTagViewStatusChangedListener() {
            @Override
            public void onOpened(ITagSelectorTabView openedView) {
              
            }

            @Override
            public void onClosed(ITagSelectorTabView closedView) {
              
            }
        });

  • 更多用法请看源码咯

#License https://www.gnu.org/licenses/licenses.html

About

TagSelectorView

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%