ListView联动(二级联动)简单易懂

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 14:31   24   0

前段时间项目需求,需要做二级联动(左边列表点击联动右边列表,右边列表滑动联动左边列表)的需求,现在已经发版,抽时间总结,记录下来


这里代码是新写的一个Demo,项目中的代码太多,逻辑太多,不好贴代码

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ListView
        android:id="@+id/lefte_image"   
        android:layout_width="100dp"
        android:layout_height="match_parent"></ListView>

    <ListView
        android:id="@+id/right_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</LinearLayout>

左边ListviewAdapter

public class LefteAdapter extends BaseAdapter {
    private ArrayList list;
    private Context context;
    private int item;
    private String url;

    public LefteAdapter(Context applicationContext, ArrayList list) {
        this.list = list;
        this.context = applicationContext;
    }

    public void setTpyeData(int i) {
        this.item = i;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View contenView = View.inflate(context, R.layout.item_image_deme, null);
        if (i == item) {
            url = "https://img-blog.csdn.net/20140915162641093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxsZW4zMTU0MTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center";
        } else {
            url = "https://img-blog.csdn.net/20170312221304074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VvbGluX2Jsb2c=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast";
        }
        ImageView imageView = (ImageView) contenView.findViewById(R.id.image);
        Glide.with(context)
                .load(url)
                .placeholder(R.mipmap.ic_launcher)
                .into(imageView);


        return contenView;
    }
}
PS:主要代码是
setTpyeData()
由于这是Demo没有使用复用item,还有这里Glide(不知道的话百度)是为了见识一下它的强大,可用其他代替

点击左边联动右边

 //左边列表点击监听
        lefte_image.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                right_image.setSelection(i);//选中item(联动了右边)
            }
        });
右边滑动联动左边

        //右边列表滑动监听
        right_image.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView absListView, int i) {
            }

            @Override
            public void onScroll(AbsListView absListView, int firstVisibleItem, int i1, int i2) {
                lefte.setTpyeData(firstVisibleItem);//主要是这行代码
                lefte.notifyDataSetChanged();
            }
        });
完成


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP