Java 以编程方式在表中添加新行
我试图解决一个问题,当用户每天完成所有迷你游戏时,创建新行 代码应该将今天的分数保存到变量中(我使用的是SharedReferences),如果前一行的值大于零,则将此变量保存到下一行。 目标是用户可以跟踪其进度。 我所做的是将所有4场比赛的分数保存到一行,同时也保存了今天的日期。我确信像rtsPointsView1,2,3等多个变量都是无用的,我可以用更有效的方式来写,但我不知道怎么写 如何创建正确显示用户进度的表格 MyProgressActivity.javaJava 以编程方式在表中添加新行,java,android,android-layout,Java,Android,Android Layout,我试图解决一个问题,当用户每天完成所有迷你游戏时,创建新行 代码应该将今天的分数保存到变量中(我使用的是SharedReferences),如果前一行的值大于零,则将此变量保存到下一行。 目标是用户可以跟踪其进度。 我所做的是将所有4场比赛的分数保存到一行,同时也保存了今天的日期。我确信像rtsPointsView1,2,3等多个变量都是无用的,我可以用更有效的方式来写,但我不知道怎么写 如何创建正确显示用户进度的表格 MyProgressActivity.java package com.pr
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
}
}
活动_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>
我认为最好的方法是使用ListView并通过ListAdapter进行更新。看看本教程:我认为最好的方法是使用ListView并通过ListAdapter进行更新。请看本教程:
//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();
}