Android: рисование пользовательского вида холста как элемента Android Spinner - PullRequest
0 голосов
/ 05 мая 2020

Я создал настраиваемый вид холста и хотел добавить это настраиваемое представление холста в качестве элемента прядильщика в Android Спиннер. это мой Custom Canvas View

public class Pattern extends View {

/**
 * Instance of Paint.
 */
private Paint mPaint;

/**
 * Instance of DashPathEffect.
 */
private DashPathEffect mDashPath;

/**
 * Activity context to obtain color information.
 */
private Resources mResources;


/**
 * Constructor for Pattern.
 */
public Pattern(Context context) {
    super(context);
    mPaint = new Paint();
    mDashPath = new DashPathEffect(new float[]{20, 20}, (float) 4.0)
}

@Override
public final void onDraw(final Canvas canvas) {
    mPaint.setColor(Color.GRAY);
    mPaint.setPathEffect(mDashPath);
    mPaint.setStyle(Paint.Style.STROKE);
    canvas.drawRect(10, 10, 150, 340, mPaint);
}

и это мой метод getView customAdapter

@Override
public final View getView(final int position, final View convertView, final ViewGroup parent) {

    View itemView = convertView;
    View areaItemView = objectItems.get(position);
    if (itemView == null) {
        itemView = LayoutInflater.from(mContext).inflate(R.layout.custom_pattern_layout,parent, false);
    }

    LinearLayout simpleLinearLayout = ((ViewGroup) itemView).findViewById(R.id.custom_pattern_holder);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT);

    areaItemView.setLayoutParams(params);
    areaItemView.invalidate();
    simpleLinearLayout.addView(areaItemView);

    return itemView;
}

Это макет, который я создал для представления элементов адаптера.

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

Я передаю список своего настраиваемого объекта холста в качестве данных своему настраиваемому адаптеру и пытаюсь отобразить эти объекты как элементы счетчика, но когда я запускаю этот код, я вижу счетчик в пользовательском интерфейсе, но при нажатии на стрелку раскрывающегося списка , приложение упало со следующей ошибкой

E / RunTimeExceptionHandler: java .lang.IllegalStateException: у указанного дочернего элемента уже есть родитель. Сначала вы должны вызвать removeView () для родительского элемента ребенка.

Я знаю, я написал неправильный код, который вызывает эту проблему. Укажите правильный способ выполнения этого требования.

Спасибо.

...