0

私はコーディングの初心者です。私は警報アプリケーションを作りたい。私のメインページの断片では、ScrollView内のLinearLayoutにアラームを追加するボタンを追加しました。アラームには3つのTextViewがあり、起動/停止ボタンがあります。ここで動的に作成されたビューにIDを与える

は私が見えるように私のアラームを希望する方法である(これは現在、私のコーディングの任意の場所で使用されていない、私はちょうど私が作ることを目指しています何の視覚的な援助を持って、それを作成した):

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="4dp" 
    android:id="@+id/alarm_fl" 
    android:background="@mipmap/white_box"> 

    <Button 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="9.5dp" 
     android:id="@+id/alarm_activation_button"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="70dp" 
     android:layout_marginTop="5dp" 
     android:textSize="10pt" 
     android:id="@+id/alarm_time"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="165dp" 
     android:layout_marginTop="11.5dp" 
     android:textSize="7pt" 
     android:id="@+id/alarm_ampm"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="70dp" 
     android:layout_marginTop="30dp" 
     android:textSize="5pt" 
     android:id="@+id/alarm_day"/> 

</FrameLayout> 

これは、私は現在の断片で私のアラームをテストしてる方法です:

alarm_llは、私が新たに作成されたアラームを移入したいのLinearLayoutである
addAlarm.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 

      LayoutInflater alarm_inflater = (LayoutInflater) getContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
      ViewGroup parent = (ViewGroup) getActivity().findViewById(R.id.alarm_ll); 
      View alarm_view = alarm_inflater.inflate(R.layout.alarm_layout, parent); 

      TextView alarm_time = (TextView) alarm_view.findViewById(R.id.alarm_time); 
      alarm_time.setText("9시 45분"); 

      TextView alarm_ampm = (TextView) alarm_view.findViewById(R.id.alarm_ampm); 
      alarm_ampm.setText("오후"); 

      TextView alarm_day = (TextView) alarm_view.findViewById(R.id.alarm_day); 
      alarm_day.setText("월,화,수,목,금"); 

      Button activation_button = (Button) alarm_view.findViewById(R.id.alarm_activation_button); 
      activation_button.setBackgroundResource(R.mipmap.checkbox_deactivated); 
     } 
    }); 

そして、ボタンとテキストビューのそれぞれを個別に操作するためには、私は一意のIDが必要であると思われました。

今ここに私の質問は以下のとおりです。私はボタンがクリックされるたびに、プログラムのビューを追加したい場合は

  1. が、これは正しいアプローチですか?または、より良い、より簡単な方法がありますか?

  2. 私のアラームは最終的にオブジェクトである必要があります。 Userのような非アクティビティクラス、またはこの場合はAlarmのために自分のレイアウトを持つことは可能でしょうか?

  3. ボタンをクリックして作成するときに、各ビューにユニークなIDを付けるにはどうすればよいですか?

  4. 私のアプリケーションを今すぐテストすると、alarm_llに追加するレイアウトは保存されないので、別のアクティビティに移動して戻ると、alarm_llがリセットされます。プリミティブなデータ型ではない場合、どのようにこれらをフラグメントに保存しますか?

多くの質問をすぐにお願いします。申し訳ありませんが、私は本当にいくつかの回答や提案が大好きです。ありがとうございました。

+0

各ビューにIDを割り当てる目的は何ですか?このIDは何のために使用されますか? –

答えて

0
  1. 複数のアラームを設定する必要があるとします。これはListViewまたはRecyclerViewの完璧な使用です。これにより、同じビューの複数のコピーを展開し、基礎となるデータに基づいてリストを表示することができます。

  2. データを格納するオブジェクトである「モデル」の作成について学ぶことをお勧めします。これらの「モデル」オブジェクトは、データを表示するビューオブジェクトとは別のものでなければなりません。このような分離には、Model-View-Controller、Model-View-Presenter、Model-View-ModelViewのようないくつかのデザインパターンがあります。

  3. android:id(XML)は、通常、Javaコードでビューのオブジェクトを取得できるようにするために使用されます。ビューを動的に作成するときは、質問に表示された方法か、XMLを膨らませるかのどちらかで既にこのオブジェクトがあるため、これらの動的に作成されたビューにIDを割り当てる必要はありません。

  4. #2で提案したデザインパターンの1つを使用する場合は、データを保存する方法も作成します。 Androidは、データベースに情報を格納するためのAPIを提供します。これは、「アダプタ」を使用することによって容易にListViewまたはRecyclerViewで表示することができます。

+0

ありがとう! –

関連する問題