Android Cambiar la vista de texto después de inflar otra vista
-
11-12-2019 - |
Pregunta
Hola, estoy tratando de cambiar una vista de texto en una vista inflada, pero la aplicación se bloquea.
Lo que estoy tratando de hacer es llenar las vistas del texto con los contenidos de las variables HomeTeam y se acerquen estas variables no son nulos porque cuando los registre los nombres allí.
Entonces, mi pregunta es cómo cambio una vista de texto y reemplazar su contenido
heres lo que he intentado
for(int t = 0; t < 1; t++){
resultsDict = jArray.getJSONObject(t);
String HomeTeam = resultsDict.getString("hometeam");
String AwayTeam = resultsDict.getString("awayteam");
Log.v("lc","hometeam" + HomeTeam);
Log.v("lc","awayteam" + AwayTeam);
}
resultsView = LayoutInflater.from(getBaseContext()).inflate(R.layout.resultscell,
null);
TextView homeTeam = (TextView) findViewById(R.id.HomeTeam);
homeTeam.setText(HomeTeam);
la vista inflada
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="20dp" >
<TextView
android:id="@+id/TextView04"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="-"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold"
/>
<TextView
android:id="@+id/HomeScore"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/TextView04"
android:text="0"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold"
/>
<TextView
android:id="@+id/AwayScore"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/TextView04"
android:text="0"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold"
/>
<TextView
android:id="@+id/AwayTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/AwayScore"
android:layout_marginLeft="14dp"
android:layout_toRightOf="@+id/AwayScore"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/blue"
android:textStyle="bold"
/>
<TextView
android:id="@+id/HomeTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/HomeScore"
android:layout_alignBottom="@+id/HomeScore"
android:layout_alignParentLeft="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/blue"
android:textStyle="bold"
/>
</RelativeLayout>
Heres el error
05-18 13:55:57.552: E/AndroidRuntime(3987): java.lang.RuntimeException: Unable to start activity ComponentInfo{co.uk.myApp.MyApp/co.uk.myApp.MyApp.HomeActivity}: java.lang.NullPointerException
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread.access$1500(ActivityThread.java:132)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.os.Handler.dispatchMessage(Handler.java:99)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.os.Looper.loop(Looper.java:143)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread.main(ActivityThread.java:4263)
05-18 13:55:57.552: E/AndroidRuntime(3987): at java.lang.reflect.Method.invokeNative(Native Method)
05-18 13:55:57.552: E/AndroidRuntime(3987): at java.lang.reflect.Method.invoke(Method.java:507)
05-18 13:55:57.552: E/AndroidRuntime(3987): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-18 13:55:57.552: E/AndroidRuntime(3987): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-18 13:55:57.552: E/AndroidRuntime(3987): at dalvik.system.NativeStart.main(Native Method)
05-18 13:55:57.552: E/AndroidRuntime(3987): Caused by: java.lang.NullPointerException
05-18 13:55:57.552: E/AndroidRuntime(3987): at co.uk.myApp.MyApp.HomeActivity.onCreate(HomeActivity.java:576)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
05-18 13:55:57.552: E/AndroidRuntime(3987): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
Solución
Necesitas cambiar:
TextView homeTeam = (TextView) findViewById(R.id.HomeTeam);
a esto:
TextView homeTeam = (TextView) resultsView.findViewById(R.id.HomeTeam);
¿Por qué?Debido a que homeTeam está disponible en su vista inflada.Por lo tanto, debe referirse a su vista inflada / ViewGroup al encontrar la vista infantil
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow