Инициализировать массив в Kotlin на основе размера списка - PullRequest
0 голосов
/ 30 мая 2019

Мне нужно добавить LineChart (используя MpAndroidChart) динамически в LinearLayout.

Я объявил arrayList с именованным списком.

 val list = arrayListOf<ABC>()
       ....

 for (i in list) {
   chart[] = LineChart(activity)
 }

Что такое значение, которое я должен поместить в []?Допустим, у list siz равно 2, мне нужно иметь 2 графика в LinearLayout.

Как мне инициализировать LineChart?

Пример

chart[i] = LineChart(activity) ???

LineChart

public class LineChart extends BarLineChartBase<LineData> implements LineDataProvider {

    public LineChart(Context context) {
        super(context);
    }

    public LineChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LineChart(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void init() {
        super.init();

        mRenderer = new LineChartRenderer(this, mAnimator, mViewPortHandler);
    }

    @Override
    public LineData getLineData() {
        return mData;
    }

    @Override
    protected void onDetachedFromWindow() {
        // releases the bitmap in the renderer to avoid oom error
        if (mRenderer != null && mRenderer instanceof LineChartRenderer) {
            ((LineChartRenderer) mRenderer).releaseBitmap();
        }
        super.onDetachedFromWindow();
    }
}

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Ваш вопрос немного неясен, но я правильно понимаю, вы можете сделать это в одной строке, например:

val chart = Array(list.size){ LineChart(list[it]) }

Или:

val chart = list.map{ LineChart(it) }.toTypedArray()

(Последний создает временный список, который может быть немного менее эффективным; но он выполняет итерацию по списку вместо индексации, что может быть быстрее, если список не имеет произвольного доступа.)

0 голосов
/ 01 июня 2019

Это мой ответ

for (i in 0 unti list.size) {
   chart[i] = LineChart(activity)
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...