2017-02-12 14 views
0

各行に同じデータを持つ複数行のアプリケーションを作成するにはどうすればよいですか。これは、すべての行がどのように見えるかです。 3つのテキストビューと2つのスピナーが含まれています。このアプリは1学期の学生のGPAを計算するのに役立ちます。複数行アクティビティの作成方法

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.mbedobe.android.samplegpacalculator.app.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="C1" 
    android:id="@+id/course_textView"/> 



<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/course_textView" 
    android:layout_toEndOf="@+id/course_textView" 
    android:layout_marginLeft="23dp" 
    android:layout_marginStart="23dp" /> 

<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner2" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/spinner" 
    android:layout_toEndOf="@+id/spinner" 
    android:layout_marginLeft="23dp" 
    android:layout_marginStart="23dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="0" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/spinner2" 
    android:layout_toEndOf="@+id/spinner2" 
    android:id="@+id/gradePoints" 
    android:layout_marginLeft="23dp" 
    android:layout_marginStart="23dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="0" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/gradePoints" 
    android:layout_toEndOf="@+id/gradePoints" 
    android:id="@+id/gradeValue" 
    android:layout_marginLeft="23dp" 
    android:layout_marginStart="23dp"/> 

</RelativeLayout> 
+0

ListViewまたはRecyclerViewをルックアップします。 –

+0

あなたはカスタムリストアイテム –

答えて

1

ListView with BaseAdapterを使用することを検討する必要があります。

+0

ベースアダプタでリストビューを使用した後、私は空白の画面を持って –

+0

ベースアダプタのリストビューはうまくいきました。 –

1

を使用することです。上記のレイアウトは、この場合の各行の行レイアウトになります。

カスタムレイアウトで独自のカスタムRecyclerViewアダプタを作成する方法を理解するには、上記のリンクを使用してください。

EDIT:

[OK]を、私はここにあなたの基礎を与えるでしょう。カスタムRecyclerViewには3つの主要な機能が必要です。

彼らは以下のとおりです。オブジェクトの

  1. リスト(データ)
  2. 各行ごとにカスタムレイアウト
  3. 上記レイアウト上にデータを変換するアダプタ。

ここで例を挙げて、これを説明しましょう。

Gmail、WhatsAppなどの人気アプリを見たことがあるはずです これらのアプリを開くと、メール/チャットなどの一覧が表示されます 注意すべき点は、各行のレイアウトが同じであってもそれらのコンテンツは異なっています。

これは2つのことを示しています。最初に、データは同じ種類のオブジェクトのリストでなければならず、2番目に各行のレイアウトは同じです。したがって、このようなlistViewまたはRecyclerViewを作成するには、行数と同じ数のレイアウトを作成する必要はありません。各行に対して1つのレイアウトを再利用できます。

したがって、私たちの3つのニーズのうち2つが理解されています。必要な最後の項目はアダプターです。アダプターはあなたのリストを取り込み、リストから各アイテムをRecyclerViewの行に変換します。これらの行は、ユーザーがリストをスクロールするときに、アダプターによって自動的に作成され、ユーザーがそれらの行を表示できなくなったときに削除されます。

このコードをご希望の場合は、お知らせください。私はこれを説明するコードをアップロードします。しかし、私はあなた自身で試してみることをお勧めします。それほど難しいことではありません。

+0

で['ListView'](https://developer.android.com/guide/topics/ui/layout/listview.html)を探しています。それらと他のいくつかのチュートリアルを見ましたが、私は起こっていることを本当に理解していない。手伝ってくれますか? –

+0

私はあなたが与えたリンクを見ましたが、問題は私がそれについてどうやって行くのか理解していないということです。私もいくつかのチュートリアルを見て、私はどのように私のレイアウトを使用してそれを行うのですか? –

+0

@ K.D.MBEDOBE私の編集を参照してください。 – Rachit

0

ListView、recyclerViewを使用するか、スクロールビューにアイテムを動的に追加します。

ListViewまたはRecyclerViewの使用が最適な方法です。

私は、あなたがjavaでうまく知識を持っている場合にのみ、Javaから機能するはずの最後のオプションを提供します。 (ステップだけではない完全なコード)

1) your xml file should contain scroll view. 
2) for each item to be added (3 textview 2 spinner), add a layout and provide layout params for it i.e width/height/orientation/background etc. 
3)add this layout to the scrollview you created in xml by 
findViewById(R.id.scrollviewId).add(layout) 
4)create your textviews/spinners in and give them layout params.{ this process is much logical in a pattern of your design so must be very careful} 
5)add all these textviews/spinners in the layout you created in step 3. 

注:お使いの設計要件に応じて手順2/3で作成したレイアウトとステップ4で作成した他の項目の間に他のレイアウトを追加する必要があります。ここで

は、あなたが言っていたコードです:

LinearLayout myLayout = (LinearLayout)findViewById(R.id.layout_in_xml); 
for(int i = 0; i < required_fields.length; i++){ 

LinearLayout lr = new RelativeLayout(DisplaySadip.this); 
    LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
lr.serLayoutParams(layoutParams); 
lr.setOrientation(LinearLayout.HORIZONTAL); 
//add linear layout to your layout in xml 
myLayout.add(lr); 
//add textview, spinner to this layout now 
TextView tv1 = new TextView(YourActivity.this) 
tv1.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
tv1.setText("......"+i); 
lr1.add(tv1) 

Spinner spinner1 = new Spinner(YourActivity.this) 
spinner.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

Spinner spinner2 = new Spinner(YourActivity.this) 
spinner.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

lr.add(spinner1); 
lr.add(spinner2); 
TextView tv2 = new TextView(YourActivity.this) 
    tv2.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    tv2.setText("......"+i); 
    lr.add(tv2) 
TextView tv3 = new TextView(YourActivity.this) 
    tv3.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    tv3.setText("......"+i); 
    lr1.add(tv3) 
} 

それはあなたがあなたのレイアウトにしたいビューのない多くを追加しない追加するものとします。

+0

まだjavaに新しいので、どんな助けもあります。 –

+0

必要なレイアウトイメージを投稿してください。 –

+0

xmlファイルは各行の予想レイアウトです。アプリは最大8行を持ちます。 –

関連する問題