2016-06-15 5 views
0
angezeigt werden

Ich erstelle eine Quiz-App, in der ich Fragen in Arraylist speichern, aber jetzt muss ich sie mit Fragmenten anzeigen, aber ich bin nicht in der Lage herauszufinden, wie gespeicherte Fragen angezeigt werden in Arraylist in Fragmente unten ist der CodeWie Fragen in der Liste in Fragmenten in Android

das dem Datenbank-Code

package com.example.android.viewpager4; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import java.util.ArrayList; 
import java.util.List; 

public class DbHelper extends SQLiteOpenHelper { 
    private static final int DATABASE_VERSION = 1; 
    // Database Name 
    private static final String DATABASE_NAME = "triviaQuiz"; 
    // tasks table name 
    private static final String TABLE_QUEST = "quest"; 
    // tasks Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_QUES = "question"; 
    private static final String KEY_ANSWER = "answer"; //correct option 
    private static final String KEY_OPTA= "opta"; //option a 
    private static final String KEY_OPTB= "optb"; //option b 
    private static final String KEY_OPTC= "optc"; //option c 
    private SQLiteDatabase dbase; 
    public DbHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     dbase=db; 
     String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST + " (" 
       + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES 
       + " TEXT, " + KEY_ANSWER+ " TEXT, "+KEY_OPTA +" TEXT, " 
       +KEY_OPTB +" TEXT, "+KEY_OPTC+" TEXT)"; 
     db.execSQL(sql);   
     addQuestions(); 
     //db.close(); 
    } 
    private void addQuestions() 
    { 
     Question q1=new Question("What is JP?","Jalur Pesawat", "Jack sParrow", "Jasa Programmer", "Jasa Programmer"); 
     this.addQuestion(q1); 
     Question q2=new Question("where the JP place?", "Monas, Jakarta", "Gelondong, Bangun Tapan, bantul", "Gelondong, Bangun Tapan, bandul", "Gelondong, Bangun Tapan, bantul"); 
     this.addQuestion(q2); 
     Question q3=new Question("who is CEO of the JP?","Usman and Jack", "Jack and Rully","Rully and Usman", "Rully and Usman"); 
     this.addQuestion(q3); 
     Question q4=new Question("what do you know about JP?", "JP is programmer home", "JP also realigy home", "all answer is true","all answer is true"); 
     this.addQuestion(q4); 
     Question q5=new Question("what do you learn in JP?","Realigy","Programming","all answer is true","all answer is true"); 
     this.addQuestion(q5); 
    } 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUEST); 
     // Create tables again 
     onCreate(db); 
    } 
    // Adding new question 
    public void addQuestion(Question quest) { 
     //SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(KEY_QUES, quest.getQUESTION()); 
     values.put(KEY_ANSWER, quest.getANSWER()); 
     values.put(KEY_OPTA, quest.getOPTA()); 
     values.put(KEY_OPTB, quest.getOPTB()); 
     values.put(KEY_OPTC, quest.getOPTC()); 
     // Inserting Row 
     dbase.insert(TABLE_QUEST, null, values);   
    } 
    public List<Question> getAllQuestions() { 
     List<Question> quesList = new ArrayList<Question>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_QUEST; 
     dbase=this.getReadableDatabase(); 
     Cursor cursor = dbase.rawQuery(selectQuery, null); 
     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       Question quest = new Question(); 
       quest.setID(cursor.getInt(0)); 
       quest.setQUESTION(cursor.getString(1)); 
       quest.setANSWER(cursor.getString(2)); 
       quest.setOPTA(cursor.getString(3)); 
       quest.setOPTB(cursor.getString(4)); 
       quest.setOPTC(cursor.getString(5)); 
       quesList.add(quest); 
      } while (cursor.moveToNext()); 
     } 
     // return quest list 
     return quesList; 
    } 
    public int rowcount() 
    { 
     int row=0; 
     String selectQuery = "SELECT * FROM " + TABLE_QUEST; 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     row=cursor.getCount(); 
     return row; 
    } 
} 

und dies ist der Code der Haupttätigkeit in der ich Änderung

package com.example.android.viewpager4; 

    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.view.ViewPager; 

    import java.util.List; 
    import java.util.Vector; 

    public class MainActivity extends FragmentActivity 
    { 


     private PagerAdapter mPagerAdapter; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.viewpager_layout); 
      initialisePaging(); 
     } 

     private void initialisePaging() 
     { 
      List<Fragment> fragments =new Vector<Fragment>(); 

      mPagerAdapter= new com.example.android.viewpager4.PagerAdapter(this.getSupportFragmentManager(),fragments); 
      ViewPager pager =(ViewPager)findViewById(R.id.viewpager); 
      pager.setAdapter(mPagerAdapter); 
     } 
    } 
machen

und das ist das XML-Layout, in dem ich als Optionen Frage mit Radio-Taste, um

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".QuizActivity" 
    > 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:orientation="vertical" > 
     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Large Text" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 
     <RadioGroup 
      android:id="@+id/radioGroup1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.04" > 
      <RadioButton 
       android:id="@+id/radio0" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:checked="true" 
       android:text="RadioButton" /> 
      <RadioButton 
       android:id="@+id/radio1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="RadioButton" /> 
      <RadioButton 
       android:id="@+id/radio2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="RadioButton" /> 
     </RadioGroup> 


    </LinearLayout> 
</RelativeLayout> 

Antwort

0

Du alles richtig zu tun. Die einzige Änderung, die Sie benötigen, besteht darin, eine eigene Liste von Fragmenten zu erstellen und Ihr PagerAdapter bereitzustellen.

List<Fragment> fragments =new Vector<Fragment>(); 

Änderung

List<CustomFragment> fragments =new Vector<CustomFragment>(); 

Jetzt für CustomFragment verwenden, um die XML, die Sie oben angegeben haben und die Frage als Parameter übergeben.

So etwas wie

fragments.add(CustomFragment.newInstance(question1)); 

    fragments.add(CustomFragment.newInstance(question2)); 

und so weiter

Bitte beachten Sie, dass dies nicht die beste Lösung sein, weil man auf einmal Objekte aller Fragmente schaffen. Überlege dir stattdessen deinen eigenen FragmentPagerAdapter zu erstellen.

+0

können Sie das konkretisieren und ausführlich darüber erzählen, wie benutzerdefinierte Fragmente implementieren oder können Sie es bitte erklären, durch Änderungen im Code machen –

+0

hey Mann mir bitte helfen und mir sagen, wie benutzerdefinierte Fragmente implementieren –

+0

https://developer.android.com/training/basics/fragments/creating.html - Anstelle von ArticleFragment lautet der Name für Ihr Fragment CustomFragment. Inflatieren Sie das XML, das Sie für Fragen in diesem Fragment onCreateView verwenden möchten. –

Verwandte Themen