GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Criando ID para uma View feita pelo Java no Android Studio

java
android
Tags: #<Tag:0x00007f1861b3d938> #<Tag:0x00007f1861b3d7d0>

#1

Hi!

Gostaria de saber como criar um id para minha View pelo java dinamicamente e pelo mesmo id chamar um onCLickListener();. Minhas Views também são feitas pelo java dinâmicas. Agradeço pelo seu Tempo!

public void onClick(View visao) {
    // Verifica qual botao tá sendo clicado pelo id
    switch (visao.getId()){
        case ? id da view ?:
            //Code a ser execultado
            break;
    }
}

// Criador dos blocos
public void criar( int visivel){

    linha = new LinearLayout(this);

    // Criando Layout e suas propriedades
    LinearLayout linha = new LinearLayout(this);

    // Parameto de posição
    LinearLayout.LayoutParams positionParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

    //LinearLayout.MarginLayoutParams margemParams = (LinearLayout.MarginLayoutParams) positionParams;
    positionParams.setMargins(15, 15, 15, 0);  // Configurando a margem do layout
    linha.setLayoutParams(positionParams);  // Configurando a posição do layout
    linha.setOrientation(LinearLayout.VERTICAL);  // Configurando a orientação do layout
    linha.setBackgroundColor(getResources().getColor(color));  // Configurando a background do layout
    linha.setPadding(50, 30, 50, 30); //Margem do layout

    // Criando TextView e suas propriedades
    TextView nome = new TextView(this);
    nome.setText(aluno);

    // Criando TextView e suas propriedades
    TextView nota = new TextView(this);
    nota.setText(media);
    nota.setTextSize(30);

    // Interligando os TextView com o Layout
    linha.addView(nome);
    linha.addView(nota);
    linha.setVisibility(visivel);
    linha.setId(ONE_ID);
    linha.setOnClickListener(this);
    layoutLinha.addView(linha);

}

Código não completo. Colocarei no github em breve.


#2

Cria o id pelo XML.

Na hora de chamar na classe vc faz assim:

TextView algumaCoisa = (TextView) mView.findViewById(R.id.o_id_que_vc_colocou_no_xml); algumaCoisa.setText(aluno);

Exemplo no XML:

 <TextView
    android:id="@+id/o_id_que_vc_colocou_no_xml"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

EDIT:

Puts, agora que vi que são dinâmicas… Porquê está fazendo assim?


#3

Lendo a documentação, vi que o id não precisa ser único, ele só precisa ser positivo. Se quiser garantir que ele seja unico, a partir do API Level 17 vc pode usar o método generateViewId()

https://developer.android.com/reference/android/view/View.html#generateViewId()

Vc faria algo como:

linha.setId(linha.generateViewId());

Mas como suas view são dinamicas, vc poderia usar variaveis de instancia ao invés de variaveis locais e usar a propria referencia como forma de saber qual é qual. Algo assim:

LinearLayout linha;

public void criar() {
    linha = new LinearLayout(this);
}

public void onClick(View visao) {
    if (visao == linha) { /* do something */ }
}

#4

Foi como eu aprendi. :frowning: