Обработка макета в пользовательском представлении - PullRequest
0 голосов
/ 27 декабря 2011

Я сделал собственный вид, чтобы удовлетворить мою потребность в простом способе отображения математического вектора. Я расширил LinearLayout и добавил ArrayList для значений. Каждый раз, когда значения меняются, я вызываю свой пользовательский метод redraw (), чтобы добавить EditTexts к LinearLayout. Таким образом, после добавления значения все существующие EditTexts добавляются еще раз. Как очистить LinearLayout или отобразить новый LinearLayout?

Вот код:

public Vector(Context context, AttributeSet attrs) {
    super(context, attrs);
    setWillNotDraw(false);
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (inflater != null) {
        inflater.inflate(R.layout.vector, this);
    }
}

public void redraw() {
    for (Float value : getArray()) {
        EditText edit = new EditText(getContext());
        edit.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.FILL_PARENT));
        edit.setText(value.toString());

        ((LinearLayout) findViewById(R.id.root)).addView(edit);
    }
}

1 Ответ

1 голос
/ 27 декабря 2011

Вы можете удалить все виды, используя ((LinearLayout) findViewById(R.id.root)).removeAllViews().Но почему вы хотите добавить весь текст редактирования снова, если вы можете установить новые значения для существующих видов текста редактирования и добавить новый вид, только если вам все еще нужно.Я не до конца тебя поняла.

...