首页 > 解决方案 > 无法将列表传递给自定义视图

问题描述

现在我有这个自定义视图,我想将数据从活动传递到这个布局

public class ImageViewing extends LinearLayout {
    ArrayList<String> urlsArrayList = new ArrayList<>();
    public ImageViewing(Context context) {
        super(context);
        init();

    }

    public ImageViewing(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();

    }

    public ImageViewing(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();

    }


    public ArrayList<String> getUrlsArrayList() {
        return urlsArrayList;
    }

    public void setUrlsArrayList(ArrayList<String> urlsArrayList) {
//        this.urlsArrayList.clear();
//        this.urlsArrayList.addAll(urlsArrayList);
        this.urlsArrayList   = urlsArrayList;
        invalidate();

    }

    private void init() {
        setOrientation(HORIZONTAL);
        if (urlsArrayList != null) {
            int size = urlsArrayList.size();
            AppLogger.log("Size",""+size);
            switch (size) {
                case 0:
                    break;
                case 1:
                    onePictureView();
                    break;
                case 2:
                    twoPictureView();
                    break;
                case 3:
                    threePictureView();

                    break;
                case 4:
                    fourPictureView();
                    break;
                default:
                    moreThanFourPictureView(size);
                    break;

            }
        } else {
        }
        invalidate();

    }}

我想通过 Array List put list Is Always 0 size

我将它添加为视图 像这样

<com.tmoo7.carmasrclub.cutomView.ImageViewing
    android:id="@+id/viewImagesLayout"
    android:layout_marginTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

然后在我的活动中

  viewImagesLayout = findViewById(R.id.viewImagesLayout);
viewImagesLayout.setUrlsArrayList(model.getPostImageUrl());

任何人都可以帮助我并告诉我出了什么问题吗 任何人都可以帮助我并告诉我出了什么问题 请任何人都可以帮助我并告诉我出了什么问题

标签: android

解决方案


把开关盒

        switch (size) {
            case 0:
                break;
            case 1:
                onePictureView();
                break;
            case 2:
                twoPictureView();
                break;
            case 3:
                threePictureView();

                break;
            case 4:
                fourPictureView();
                break;
            default:
                moreThanFourPictureView(size);
                break;

        }

改为您的“setUrlsArryList”方法

public void setUrlsArrayList(ArrayList<String> urlsArrayList) {
    this.urlsArrayList   = urlsArrayList;
    // here
    invalidate();
    }

假设你的 onePictureView()、twoPictureView()、threePictureView() 方法真的改变了你的视图的外观


推荐阅读