2016-05-17 2 views
0

Mock Up of the App I'm trying to make.アンドロイド - データベース内のIDの量に基づいてループチェックボックスなどのSQLiteデータベース、値の検索出力

選択:

のAndroidに新しいが、私は私のSQLiteのDatabaseから値を取得しようとしています格納されたIDの量に基づいてチェックボックスの連続ループを作成します。チェックボックスは、件名を出力します。可能であれば、サブジェクト名と単位を出力する必要があります。手伝って頂けますか?

 //get all subjects 
 
    public List <Subject> getAllSubjects() { 
 

 
     List <Subject> subjectList = new ArrayList <Subject>(); 
 
     //select all query 
 
     String selectQuery = " SELECT * FROM " + TABLE_SUBJECTS; 
 
     SQLiteDatabase db = this.getWritableDatabase(); 
 
     Cursor cursor = db.rawQuery(selectQuery, null); 
 

 
     //loop through all rows and add it to list 
 
     if (cursor.moveToFirst()) { 
 
     do { 
 
      Subject subject = new Subject(); 
 
      subject.setID(Integer.parseInt(cursor.getString(0))); 
 
      subject.setSubName(cursor.getString(1)); 
 
      subject.setUnits(cursor.getString(2)); 
 
      //ADD CONTACT TO LIST 
 
      subjectList.add(subject); 
 
     } while (cursor.moveToNext()); 
 
     } 
 
     return subjectList; 
 
    }

私はMainActivityと、ループチェックボックスおよび/またはリストビューとして出力してにsubjectList値を取得する方法の構文やコード例が必要です。

+0

@jankigadhiya申し訳ありませんが、今すぐコードを追加しました。 –

+0

あなたの質問についてはっきりしてください。私はあなたが何をしようとしているのか理解できません。 –

+0

@jankigadhiya 2つのEditTextを1つの配列に格納するアプリケーションを作ろうとしています。私はダイアログボックスを開くボタンを実装し、ダイアログボックスには入力された配列値のチェックボックスリストビューがあります。値を選択して送信すると、チェックボックスの選択したすべての値が別の画面に表示されます。それが私がやろうとしていることです。 –

答えて

1

最初にこのリンクを参照してください:Learn SQLITE。上記のチュートリアルの助けを借りて

科目 & 教師という名前の2つのテーブルを作成し、テーブルの構造は次のようになります。

件名:ID整数PRIMARY KEY AUTOINCREAMENT、NAMEテキスト、単位テキスト。

教師:ID整数プライマリキーオートインクリエート、名前テキスト、件名テキスト。

追加クラス対象

第1番目にはサブネームがあり、第2にはユニットの数があります。ボタンをクリックして別の文字列で2つの値を取って、の科目テーブルに保存します。件名テーブルには次のようなレコードが含まれています:

Id   Name  Units 
1  Subject-1  4 

このようなレコードを含むようになりました。教師を追加して、あなたは教師の名前が入力されますのEditTextれる1つを有することになる

を割り当てについて

。 1つの選択ボタン、そのボタンのクリックで、私たちの科目表から科目のリストを表示することができます。

クリックしてOkをクリックすると、選択した科目が表示されます。

教師分離対象のコンマの .StoreだけIDを、ボタンのクリックを提出表に教師データを保存します。その後、そのIDだけで特定のものを参照します。今、先生のテーブルのようなデータ持つことになる

:教師

のリストについては

Id   Name  Subjects 
1   daniel   1,2 

は、私たちの教師のテーブルからリストを表示します。

EDIT 2:リストビューにリストを設定するための

このリンクを参照してください:How to set list in ListView+CheckBoxes

私はここにコンセプトまとめています:

手順:1

あなたはcreatする必要があります水平方向にのみ配置TextViewのチェックボックスが含まれていますEA list_item.xmlレイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="6dip" > 

    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:text="CheckBox" /> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/checkBox1" 
     android:layout_alignBottom="@+id/checkBox1" 
     android:layout_toRightOf="@+id/checkBox1" 
     android:text="TextView" /> 

</LinearLayout> 

ステップ:2あなたが設定されますあなたのリストの世話をされるアダプタを作成する必要が

リストビューに追加します。

public class MyCustomAdapter extends ArrayAdapter<Subject> { 

private ArrayList<Subject> subList; 

public MyCustomAdapter(Context context, int textViewResourceId, 
         ArrayList<Subject> subList) { 
    super(context, textViewResourceId, subList); 
    this.subList = new ArrayList<Subject>(); 
    this.subList.addAll(subList); 
} 

private class ViewHolder { 
    TextView name; 
    CheckBox chk_box; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder = null; 
    Log.v("ConvertView", String.valueOf(position)); 

    if (convertView == null) { 
     LayoutInflater vi = (LayoutInflater) getSystemService(
       Context.LAYOUT_INFLATER_SERVICE); 
     convertView = vi.inflate(R.layout.list_item, null); 

     holder = new ViewHolder(); 
     holder.name = (TextView) convertView.findViewById(R.id.name); 
     holder.chk_box = (CheckBox) convertView.findViewById(R.id.checkBox1); 
     convertView.setTag(holder); 


    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    Subject subject = subList.get(position); 
    holder.name.setText(subject.getSubName() + " - " + subject.getUnits()); 


    return convertView; 

} 

} 

ステップ - 3

このアダプタを設定して、あなたにMainActivtyでのListView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
    > 

    <ListView 
     android:id="@+id/mylist" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

MainActivty.java

xml activity_main.xmlを作成します。

public class MainActivity extends Activity { 

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

    mylist = (ListView)findViewById(R.id.mylist); 
    mylist.setAdapter(new MyCustomAdapter(MainActivty.this,subjectList,R.layout.list_item)); 
} 

} 
+0

ありがとう、これは私の多くの質問を明確にしました。現在、私のコードに取り組んでいれば、うまくいけば、それは私が望むようにうまくいくでしょう。 –

+0

私の喜びはそれを助けました..ハッピーコーディング:) –

+1

これまでのところ、あなたが私にSQLiteデータベーステーブル科目を取得する方法のサンプルコードを私に教えてもらえますか?チェックボックスに値を入力すると、ユーザーは選択した内容を確認できますか?ありがとう!私は現在、選択ボタンに取り組んでいます。 http://imgur.com/CDsvR9a –

関連する問題