0

I'm currently learning some android for a school project and I can't figure out the way to set text dynamically to a TextView.

Here is the full activity:

package com.avilyne.android.gcmclient;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.content.DialogInterface;

public class EnviarMensaje extends Activity {
    ListView l; 
    EditText t;
    TextView err;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_enviar_mensaje);

        l = (ListView)findViewById(R.id.listaVista);    
        t = (EditText)findViewById(R.id.editText1);
        err = (TextView)findViewById(R.id.textoss);
        err.setText("Escriba su mensaje y luego seleccione el canal.");
        l.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                String m= t.getText().toString();
                if(m.equals("")){
                    err.setText("Escriba su mensaje y luego seleccione el canal.");
                    return;
                }
                else{
                    showAlert();
                    (new Funciones()).EnviarMensaje(l.getItemAtPosition(arg2).toString(), m);
                    //mostrar mensaje Su mensaje ha sido enviado
                    Intent activityChangeIntent = new Intent(EnviarMensaje.this, FirstActivity.class);
                    EnviarMensaje.this.startActivity(activityChangeIntent);
                }
            }
        });


        ListView lv;
        setContentView(R.layout.activity_enviar_mensaje);
        lv = (ListView)findViewById(R.id.listaVista);

        ArrayList<String> your_array_list = (new Funciones()).listarCanales();

        // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, your_array_list);
        lv.setAdapter(arrayAdapter); 

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.enviar_mensaje, menu);
        return true;
    }

    private void showAlert(){
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Confirmación.");
        alertDialog.setMessage("Su mensaje ha sido enviado correctamente.");
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
              // TODO Add your code for the button here.
           }
        });
        // Set the Icon for the Dialog
        alertDialog.setIcon(R.drawable.ic_launcher);
        alertDialog.show();


    }

}

Below is my activity_enviar_mensaje:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".EnviarMensaje" >

    <TextView
        android:id="@+id/instrucciones"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/instrucciones"
        android:layout_alignRight="@+id/instrucciones"
        android:layout_below="@+id/instrucciones"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/textoss"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:text="TextView" />

    <ListView
        android:id="@+id/listaVista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textoss"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" >
    </ListView>



</RelativeLayout>

Any help will be much appreciated... Thank you for the time, José.

4

2 回答 2

4
        ListView lv;
        setContentView(R.layout.activity_enviar_mensaje);
        lv = (ListView)findViewById(R.id.listaVista);

您已将内容设置为TWICE活动,这就是为什么您的文本没有更改的原因,因为活动再次设置了原始布局。从底部删除以上三行,它会工作得很好。

同样在删除上述三行后,将适配器设置为 l.setAdapter(arrayAdapter);

以下是您更新的 onCreate() 方法

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

        l = (ListView)findViewById(R.id.listaVista);    
        t = (EditText)findViewById(R.id.editText1);
        err = (TextView)findViewById(R.id.textoss);
        err.setText("Escriba su mensaje y luego seleccione el canal.");
        l.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                String m= t.getText().toString();
                if(m.equals("")){
                    err.setText("Escriba su mensaje y luego seleccione el canal.");
                    return;
                }
                else{
                    showAlert();
                    (new Funciones()).EnviarMensaje(l.getItemAtPosition(arg2).toString(), m);
                    //mostrar mensaje Su mensaje ha sido enviado
                    Intent activityChangeIntent = new Intent(EnviarMensaje.this, FirstActivity.class);
                    EnviarMensaje.this.startActivity(activityChangeIntent);
                }
            }
        });



        ArrayList<String> your_array_list = (new Funciones()).listarCanales();

        // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, your_array_list);
        l.setAdapter(arrayAdapter); 

    }
于 2013-10-20T14:26:42.867 回答
0

布局xml文件中没有R.id.textoxml文件
更改@+id/textoss@+id/texto

于 2013-10-20T14:31:55.393 回答