Android Studio: Создайте for-l oop для струнных - PullRequest
0 голосов
/ 26 мая 2020

Хорошо, так что я работаю над таблицей, где я получаю все необходимое из моих общих настроек, сохраняю их в строках, а затем устанавливаю текст в отдельных строках таблицы. Он работает, но дело в том, что я чувствую, что это было бы возможно с меньшим количеством кода, если бы я просто использовал для l oop. Также это позволило бы добавлять и удалять строки, если я хочу. Единственная проблема, которая у меня есть: я не знаю, как это сделать для l oop. Я имею в виду, что мне нужно будет пролистать "e1, e2, e3, d1 ..." et c. У кого-нибудь из вас есть идея?

Вот код:

   e1 = (TextView) findViewById(R.id.e1);
         e2 = (TextView) findViewById(R.id.e2);
         e3 = (TextView) findViewById(R.id.e3);

         d1 = (TextView) findViewById(R.id.d1);
         d2 = (TextView) findViewById(R.id.d2);
         d3 = (TextView) findViewById(R.id.d3);

         t1 = (TextView) findViewById(R.id.t1);
         t2 = (TextView) findViewById(R.id.t2);
         t3 = (TextView) findViewById(R.id.t3);

         n1 = (TextView) findViewById(R.id.n1);
         n2 = (TextView) findViewById(R.id.n2);
         n3 = (TextView) findViewById(R.id.n3);


        //shared preferences 
        SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        final SharedPreferences.Editor editor = mPreferences.edit();


        //first row
        String event1 = mPreferences.getString("event", "");
        String date1 = mPreferences.getString("date", "");
        String time1 = mPreferences.getString("time","");
        String name1 = mPreferences.getString("name","");

        //second row
        String event2 = mPreferences.getString("event1", "");
        String date2 = mPreferences.getString("date1", "");
        String time2 = mPreferences.getString("time1","");
        String name2 = mPreferences.getString("name1","");

        //third row
        String event3 = mPreferences.getString("event2", "");
        String date3 = mPreferences.getString("date2", "");
        String time3 = mPreferences.getString("time2","");
        String name3 = mPreferences.getString("name2","");


        //set text in the rows
        e1.setText(event1);
        d1.setText(date1);
        t1.setText(time1);
        n1.setText(name1);

        e2.setText(event2);
        d2.setText(date2);
        t2.setText(time2);
        n2.setText(name2);

        e3.setText(event3);
        d3.setText(date3);
        t3.setText(time3);
        n3.setText(name3);

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Допустим, мы можем сделать это динамически:

Создать массив из string [] NamesTimes. Поместите все свои данные в массив.

Обходите массив в al oop с добавлением новых полей.

Пример:

public class MainActivity extends AppCompatActivity {
LinearLayout linearLayout;

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

    linearLayout = findViewById(R.id.linear_layout);
    //Adding your TextViews
    for (int i = 1; i <= NamesTimes.length; i++) {
        TextView textView = new TextView(this);
        textView.setText("This is content " + NamesTimes[i]);
        linearLayout.addView(textView);
    } 
}
}
0 голосов
/ 26 мая 2020

Что ж, в Java вы должны полагаться на проверку времени выполнения. Хорошая практика! И когда вы хотите сэкономить место и динамически обращаться к переменным, выполняя что-то вроде:

for (int i = 0; i < 3; i++) {
---- dynamically refer to variables here somehow --- 
}

, вы лишаете себя проверки во время выполнения. Таким образом, могут возникнуть ошибки.

Вы можете сэкономить место, выполнив:

e1.setText(mPreferences.getString("event", ""));
d1.setText(mPreferences.getString("date", ""));
t1.setText(mPreferences.getString("time",""));
n1.setText(mPreferences.getString("name",""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...