Использовать один макет XML для нескольких действий с различными данными - PullRequest
10 голосов
/ 06 января 2012

Я знаю, что это очень простой вопрос, однако, как новичок, я не могу обойти его. Итак, я хочу иметь несколько действий для использования одного и того же макета XML (состоящего, например, из 1 кнопки изображения и нескольких текстовых представлений с разными идентификаторами). Теперь для каждого действия я хочу, чтобы они просматривали один и тот же макет, но переопределяли представления с данными, уникальными для каждого действия. Каков наилучший способ сделать это? Кроме того, кнопка image должна открывать различные URL-адреса в видеоплеере (ссылки на YouTube).

А может кто-нибудь сказать мне, какой самый практичный способ научиться программированию на Android?

UPDATE Это мой текущий код:

public class TemakiActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contentviewer);
}

}

Например, у меня есть текстовое представление с идентификатором "descriptionviewer" и кнопка с идентификатором "videolink", теперь, как вы их кодируете?

Ответы [ 2 ]

5 голосов
/ 06 января 2012

Вы можете использовать один и тот же файл макета и установить атрибуты для представлений в методе onCreate (..) каждого действия.

Если вы хотите, чтобы для каждой кнопки изображения открывался отдельный URL-адрес, вы можете установить его во время выполнения следующим образом

public void onCreate(Bundle b) {

    Button button =(Button)findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            //different action for each activity
        }
    });
}
4 голосов
/ 16 мая 2013

Да, вы можете!У меня было несколько операций раздувания одного макета, но они сохраняли разные общие настройки.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.same_layout);

    TextView urlDesc = (TextView)findViewById(R.id.descriptionviewer);
    urlDesc.setText("url_1"); //now in other activities-- urlDesc.setText("url_2");


    ImageButton aButton = (ImageButton)findViewById(R.id.videolink);
    aButton.setOnClickListener(aButtonListener);
}

private OnClickListener aButtonListener = new OnClickListener() {
    public void onClick(View v) {
        // go open url_1 here. In other activities, open url_x, url_y, url_z
        finish();
    }
};

Тот же код, просто меняющий текст, который вы хотите установить для TextView и URL, чтобы открыть в OnClickListener ().Больше не нужно менять.

...