首页 > 解决方案 > 以编程方式在表中添加新行

问题描述

当用户每天完成所有迷你游戏时,我正在尝试解决创建新行的问题。

代码应该将今天的分数保存到变量(我正在使用 Sharedpreferences),如果前一行的值不同于零,则将此变量保存到下一行。 目标是用户可以跟踪他的进度。

我所做的是将所有 4 场比赛的分数保存到一行,并保存今天的日期。我确信像 rtsPointsView1,2,3 等这些多个变量是无用的,我可以用更有效的方式编写它,但我不知道如何。

如何创建正确显示用户进度的表?

MyProgressActivity.java

package com.pracainzynierska.inzynierka;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;

import com.pracainzynierska.inzynierka.R;

import java.util.Locale;


public class MyProgressActivity extends AppCompatActivity {

    TextView usernameView, rtsPointsView1, mcPointsView1, gPointsView1, fttPointsView1, dateView1, totalScoreView, myProgressView,
                            rtsPointsView2, mcPointsView2, gPointsView2, fttPointsView2, dateView2,
                            rtsPointsView3, mcPointsView3, gPointsView3, fttPointsView3, dateView3,
                            rtsPointsView4, mcPointsView4, gPointsView4, fttPointsView4, dateView4,
                            rtsPointsView5, mcPointsView5, gPointsView5, fttPointsView5, dateView5,
                            rtsPointsView6, mcPointsView6, gPointsView6, fttPointsView6, dateView6,
                            rtsPointsView7, mcPointsView7, gPointsView7, fttPointsView7, dateView7;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_progress);
        String user = getIntent().getStringExtra("username");
        usernameView = findViewById(R.id.username_myprogress);
        usernameView.setText("" + user);

        //region findViewById region
        rtsPointsView1 = findViewById(R.id.rts_score_1);
        mcPointsView1 = findViewById(R.id.mc_score_1);
        gPointsView1 = findViewById(R.id.g_score_1);
        fttPointsView1 = findViewById(R.id.ftt_score_1);
        dateView1 = findViewById(R.id.date);

        rtsPointsView2 = findViewById(R.id.rts_score_2);
        mcPointsView2 = findViewById(R.id.mc_score_2);
        gPointsView2= findViewById(R.id.g_score_2);
        fttPointsView2 = findViewById(R.id.ftt_score_2);
        dateView2 = findViewById(R.id.date2);

        rtsPointsView2 = findViewById(R.id.rts_score_2);
        mcPointsView2 = findViewById(R.id.mc_score_2);
        gPointsView2 = findViewById(R.id.g_score_2);
        fttPointsView2 = findViewById(R.id.ftt_score_2);
        dateView2 = findViewById(R.id.date2);

        rtsPointsView3 = findViewById(R.id.rts_score_3);
        mcPointsView3 = findViewById(R.id.mc_score_3);
        gPointsView3 = findViewById(R.id.g_score_3);
        fttPointsView3 = findViewById(R.id.ftt_score_3);
        dateView3 = findViewById(R.id.date3);

        rtsPointsView4 = findViewById(R.id.rts_score_4);
        mcPointsView4 = findViewById(R.id.mc_score_4);
        gPointsView4 = findViewById(R.id.g_score_4);
        fttPointsView4 = findViewById(R.id.ftt_score_4);
        dateView4 = findViewById(R.id.date4);

        rtsPointsView5 = findViewById(R.id.rts_score_5);
        mcPointsView5 = findViewById(R.id.mc_score_5);
        gPointsView5 = findViewById(R.id.g_score_5);
        fttPointsView5 = findViewById(R.id.ftt_score_5);
        dateView5 = findViewById(R.id.date5);

        rtsPointsView6 = findViewById(R.id.rts_score_6);
        mcPointsView6 = findViewById(R.id.mc_score_6);
        gPointsView6 = findViewById(R.id.g_score_6);
        fttPointsView6 = findViewById(R.id.ftt_score_6);
        dateView6 = findViewById(R.id.date6);

        rtsPointsView7 = findViewById(R.id.rts_score_7);
        mcPointsView7 = findViewById(R.id.mc_score_7);
        gPointsView7 = findViewById(R.id.g_score_7);
        fttPointsView7 = findViewById(R.id.ftt_score_7);
        dateView7 = findViewById(R.id.date7);

        totalScoreView = findViewById(R.id.totalScoreView);
        myProgressView = findViewById(R.id.myProgressView);

        // endregion findViewById region


        SharedPreferences preferences =  this.getSharedPreferences(usernameView.getText().toString(), Context.MODE_PRIVATE);
        int rts_score = preferences.getInt("rts_score",0);
        int mc_score = preferences.getInt("mc_score",0);
        int g_score = preferences.getInt("g_score",0);
        int ftt_score = preferences.getInt("ftt_score",0);
        int dailyChallengeScore = preferences.getInt("dailychallenge_score",0);
        int total_score = rts_score + mc_score + g_score + ftt_score + dailyChallengeScore;
        String rts_date = preferences.getString("date","-");

        AssetManager am = getApplicationContext().getAssets();
        Typeface logoFont = Typeface.createFromAsset(am, String.format(Locale.ENGLISH, "fonts/%s","FjallaOne-Regular.ttf"));
        Typeface myProgressFont = Typeface.createFromAsset(am, String.format(Locale.ENGLISH, "fonts/%s","Montserrat-Regular.ttf"));
        myProgressView.setTypeface(logoFont);
        myProgressView.setText("My Progress");

        //region setTypeface & setText

        rtsPointsView1.setTypeface(myProgressFont);
        rtsPointsView1.setText("" + rts_score);

        mcPointsView1.setTypeface(myProgressFont);
        mcPointsView1.setText("" + mc_score);

        gPointsView1.setTypeface(myProgressFont);
        gPointsView1.setText("" + g_score);

        fttPointsView1.setTypeface(myProgressFont);
        fttPointsView1.setText("" + ftt_score);

        dateView1.setTypeface(myProgressFont);
        dateView1.setText("" + rts_date);

        rtsPointsView2.setTypeface(myProgressFont);
        rtsPointsView2.setText("" + rts_score);

        mcPointsView2.setTypeface(myProgressFont);
        mcPointsView2.setText("" + mc_score);

        gPointsView2.setTypeface(myProgressFont);
        gPointsView2.setText("" + g_score);

        fttPointsView2.setTypeface(myProgressFont);
        fttPointsView2.setText("" + ftt_score);

        dateView2.setTypeface(myProgressFont);
        dateView2.setText("" + rts_date);

        rtsPointsView3.setTypeface(myProgressFont);
        rtsPointsView3.setText("" + rts_score);

        mcPointsView3.setTypeface(myProgressFont);
        mcPointsView3.setText("" + mc_score);

        gPointsView3.setTypeface(myProgressFont);
        gPointsView3.setText("" + g_score);

        fttPointsView3.setTypeface(myProgressFont);
        fttPointsView3.setText("" + ftt_score);

        dateView3.setTypeface(myProgressFont);
        dateView3.setText("" + rts_date);

        rtsPointsView4.setTypeface(myProgressFont);
        rtsPointsView4.setText("" + rts_score);

        mcPointsView4.setTypeface(myProgressFont);
        mcPointsView4.setText("" + mc_score);

        gPointsView4.setTypeface(myProgressFont);
        gPointsView4.setText("" + g_score);

        fttPointsView4.setTypeface(myProgressFont);
        fttPointsView4.setText("" + ftt_score);

        dateView4.setTypeface(myProgressFont);
        dateView4.setText("" + rts_date);

        rtsPointsView5.setTypeface(myProgressFont);
        rtsPointsView5.setText("" + rts_score);

        mcPointsView5.setTypeface(myProgressFont);
        mcPointsView5.setText("" + mc_score);

        gPointsView5.setTypeface(myProgressFont);
        gPointsView5.setText("" + g_score);

        fttPointsView5.setTypeface(myProgressFont);
        fttPointsView5.setText("" + ftt_score);

        dateView5.setTypeface(myProgressFont);
        dateView5.setText("" + rts_date);

        rtsPointsView6.setTypeface(myProgressFont);
        rtsPointsView6.setText("" + rts_score);

        mcPointsView6.setTypeface(myProgressFont);
        mcPointsView6.setText("" + mc_score);

        gPointsView6.setTypeface(myProgressFont);
        gPointsView6.setText("" + g_score);

        fttPointsView6.setTypeface(myProgressFont);
        fttPointsView6.setText("" + ftt_score);

        dateView6.setTypeface(myProgressFont);
        dateView6.setText("" + rts_date);

        rtsPointsView7.setTypeface(myProgressFont);
        rtsPointsView7.setText("" + rts_score);

        mcPointsView7.setTypeface(myProgressFont);
        mcPointsView7.setText("" + mc_score);

        gPointsView7.setTypeface(myProgressFont);
        gPointsView7.setText("" + g_score);

        fttPointsView7.setTypeface(myProgressFont);
        fttPointsView7.setText("" + ftt_score);

        dateView7.setTypeface(myProgressFont);
        dateView7.setText("" + rts_date);

        totalScoreView.setTypeface(logoFont);
        totalScoreView.setText("Total score: " + total_score);


        //endregion setTypeface & setText


    }
}

activity_my_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFF00"
    tools:context="com.pracainzynierska.inzynierka.MyProgressActivity">

    <TableLayout
        android:id="@+id/myprogressTable"
        android:layout_width="416dp"
        android:layout_height="534dp"
        android:layout_marginTop="195dp"
        android:layout_weight="0"
        android:padding="5dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TableRow android:layout_height="60dp">

            <TextView
                android:id="@+id/date"
                android:layout_width="30dp"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="Date"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/hitLabel"
                android:layout_width="49dp"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="Remember The Sequence"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/errorLabel"
                android:layout_width="44dp"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="MathChain"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/geomemotry_table"
                android:layout_width="50dp"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="Geomemotry"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/fillthetext_table"
                android:layout_width="50dp"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="Fill The Text"
                android:textStyle="bold" />


        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date1"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="0"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_1"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="0" />


            <TextView
                android:id="@+id/mc_score_1"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="0" />

            <TextView
                android:id="@+id/g_score_1"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="0" />

            <TextView
                android:id="@+id/ftt_score_1"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="0" />

        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date2"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/mc_score_2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />
        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date3"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />


            <TextView
                android:id="@+id/mc_score_3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date4"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />


            <TextView
                android:id="@+id/mc_score_4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date5"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />


            <TextView
                android:id="@+id/mc_score_5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date6"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />


            <TextView
                android:id="@+id/mc_score_6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

        </TableRow>

        <TableRow android:layout_height="wrap_content">

            <TextView
                android:id="@+id/date7"
                android:layout_width="44dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text=""
                android:textStyle="bold" />

            <TextView
                android:id="@+id/rts_score_7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />


            <TextView
                android:id="@+id/mc_score_7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/g_score_7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

            <TextView
                android:id="@+id/ftt_score_7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="" />

        </TableRow>

    </TableLayout>

    <TextView
        android:id="@+id/myProgressView"
        android:layout_width="270dp"
        android:layout_height="52dp"
        android:layout_marginTop="60dp"
        android:gravity="center_horizontal"
        android:text=""
        android:textSize="32sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/username_myprogress"
        android:layout_width="79dp"
        android:layout_height="35dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:text=""
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/totalScoreView"
        android:layout_width="200dp"
        android:layout_height="39dp"
        android:layout_marginBottom="10dp"
        android:gravity="center"
        android:text=""
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@+id/myprogressTable"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

游戏存档之一


//method for saving. It looks almost the same in every mini-game

private void saveScore() {
        SharedPreferences preferences = this.getSharedPreferences(usernameView.getText().toString(), Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putInt("rts_score",player_points);
        editor.commit();
    }

标签: javaandroidandroid-layout

解决方案


推荐阅读