Professional Documents
Culture Documents
xml
</android.support.v7.widget.RecyclerView>
Aceste butoane , cand sunt apasate prin intermediul fisierului java atribuit ,
te redirectioneaza la una din paginile la care e facuta conexiunea.
category_item.xml
capitole_item.xml
activity_capitole.xml
</android.support.v7.widget.RecyclerView>
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
activity_chestionar_curent.xml
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
Aceste butoane , cand sunt apasate prin intermediul fisierului java atribuit ,
iti indica daca e gresit sau corect raspunsul selectat.
CapitoleList.java
FirebaseDatabase database;
DatabaseReference capitole;
FirebaseRecyclerAdapter<Capitole,CapitoleViewHolder> adapter;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_capitole);
//Firebase
database = FirebaseDatabase.getInstance();
capitole = database.getReference("Capitole");
//intent
if(getIntent() !=null)
categoryId=getIntent().getStringExtra("CategoryId");
if(!categoryId.isEmpty()&&categoryId !=null){
loadCapitole(categoryId);
}
}
}
};
recyclerView.setAdapter(adapter);
}
}
Pe scurt aceasta este lista pentru capitole , aici se initiaza baza de date , la
care se si face legatura , se declara componentele paginii xml atribuite si se
fixeaza lista de capitole generand din baza de date cate un item pentru
fiecare capitol.
ChestionarCurent.java
package sicktrending.com.fizica;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chestionar_termo);
updateQuestion(r.nextInt(mQuestionsLenght));
answer1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(answer1.getText() == mAnswer)
{
mScor ++;
scor.setText("Raspunsuri corecte : " +mScor);
updateQuestion(r.nextInt(mQuestionsLenght));
}
else {gameOver();}
}
});
answer2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(answer2.getText() == mAnswer)
{
mScor ++;
scor.setText("Raspunsuri corecte : " +mScor);
updateQuestion(r.nextInt(mQuestionsLenght));
}
else {gameOver();}
}
});
answer3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(answer3.getText() == mAnswer)
{
mScor ++;
scor.setText("Raspunsuri corecte : " +mScor);
updateQuestion(r.nextInt(mQuestionsLenght));
}
else {gameOver();}
}
});
answer4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(answer3.getText() == mAnswer)
{
mScor ++;
scor.setText("Raspunsuri corecte : " +mScor);
updateQuestion(r.nextInt(mQuestionsLenght));
}
else {gameOver();}
}
});
}
private void updateQuestion (int num)
{question.setText(mQuestionsCurent.getQuestion(num));
answer1.setText(mQuestionsCurent.getChoice1(num));
answer2.setText(mQuestionsCurent.getChoice2(num));
answer3.setText(mQuestionsCurent.getChoice3(num));
answer4.setText(mQuestionsCurent.getChoice4(num));
mAnswer = mQuestionsCurent.getCorrectAnswer(num);
}
private void gameOver(){
AlertDialog.Builder alertDialogBuilder = new
AlertDialog.Builder(ChestionarCurent.this);
alertDialogBuilder.setMessage("Raspuns gresit ! Ai raspuns corect la "
+mScor +" intrebari.")
.setCancelable(false)
.setPositiveButton("Reincearca",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
startActivity(new
Intent(getApplicationContext(),ChestionarTermo.class));
finish();
}
})
.setNegativeButton("Iesi",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
Aceasta este pagina java atribuita paginilor xml de tip chestionar , in care se
initiaza raspunsurile si se verifica dupa ce este apasat unul dintre butoane ,
aceasta este instruita sa afiseze un anunt daca ai gresit raspunsul si sa-ti
dea de ales daca sa reincerci sau sa iesi din chestionar , daca ai pus
raspunsul corect atunci scorul afisat sus se va schimba (+1) .
De asemenea dupa fiecare raspuns corect se va afisa urmatoarea intrebare
care este generata aleatoriu din setul de intrebari dintr-un alt fisier java.
QuestionsCurent.java
package sicktrending.com.fizica;
};
},
{"ohm",
"A",
"N",
"M"
},
{"Ohmmetrul",
"Termometrul",
"Voltmetrul",
"Ampermetrul"
},
{"suma dintre rezistenta electrica si patratul intensitatii
curentului electric",
"produsul dintre rezistenta electrica si patratul
intensitatii curentului electric",
"rezistenta electrica este invers proportionala cu
intensitatea curentului electric",
"diferenta dintre rezistenta electrica si patratul
intensitatii curentului electric"
},
{"legea lui Joule",
"legea lui Kirkhoff",
"legea lui Ohm",
"legea lui Dalton"
},
{"N",
"J",
"S",
"C"
},
{"interactiuni de atractie si de respingere",
"nu se manifesta interactiuni",
"interactiuni de respingere",
"interactiuni de atractie"
},
{"Coulomb",
"Joule",
"Ohm",
"Faraday"
},
{"masa corpurilor",
"mediul in care se afla corpurile",
"distanta dintre corpuri",
"sarcinile corpurilor"
},
{"m",
"A",
"N",
"m²"
},
{"generator, consumator, intrerupator si conductoare de legatura",
"generator si conductoare de legatura",
"conductoare de legatura si consummator",
"intrerupator si consummator"
};
};
public String getQuestion(int a){
String question = mQuestions[a];
return question;
}
TabTeorie.java
package sicktrending.com.fizica;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import sicktrending.com.fizica.Interface.ItemClickListener;
import sicktrending.com.fizica.Model.Category;
import sicktrending.com.fizica.ViewHolder.MenuViewHolder;
RecyclerView recycler_menu;
RecyclerView.LayoutManager layoutManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab1_teorie, container,
false);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
if (getView() == null) {
return;
}
//Init Firebase
database = FirebaseDatabase.getInstance();
category = database.getReference("Category");
//Load category
recycler_menu = (RecyclerView)
getView().findViewById(R.id.recycler_menu);
recycler_menu.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getView().getContext());
recycler_menu.setLayoutManager(layoutManager);
loadMenu();
}
private void loadMenu() {
adapter = new FirebaseRecyclerAdapter<Category,
MenuViewHolder>(Category.class, R.layout.category_item, MenuViewHolder.class,
category) {
@Override
protected void populateViewHolder(MenuViewHolder viewHolder,
Category model, int position) {
viewHolder.txtCategoryName.setText(model.getName());
final Category clickItem = model;
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean
isLongClick) {
//Get CategoryID
Intent capitoleList = new
Intent(getView().getContext(), CapitoleList.class);
capitoleList.putExtra("CategoryId",
adapter.getRef(position).getKey());
startActivity(capitoleList);
}
});
}
};
recycler_menu.setAdapter(adapter);
}
}
TabTeste.java
package sicktrending.com.fizica;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import sicktrending.com.fizica.Model.Category;
import sicktrending.com.fizica.ViewHolder.MenuViewHolder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab2_teste, container,
false);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
if (getView() == null) {
return;
}
final Button btnTermo = (Button) getView().findViewById(R.id.termo);
btnTermo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getView().getContext(),
ChestionarTermo.class);
startActivity(intent);
}
});
final Button btnCurent = (Button)
getView().findViewById(R.id.curentcont);
btnCurent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getView().getContext(),
ChestionarCurent.class);
startActivity(intent);
}
});
final Button btnRelativ = (Button)
getView().findViewById(R.id.relativitatea);
btnRelativ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getView().getContext(),
ChestionarRelativ.class);
startActivity(intent);
}
});
final Button btnMecanica = (Button)
getView().findViewById(R.id.mecanica);
btnMecanica.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getView().getContext(),
ChestionarMecanica.class);
startActivity(intent);
}
});
final Button btnOptica = (Button) getView().findViewById(R.id.optica);
btnOptica.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getView().getContext(),
ChestionarOptica.class);
startActivity(intent);
}
});
}
}
Teorie.java
package sicktrending.com.fizica;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import sicktrending.com.fizica.Model.Capitole;
String capitoleId="";
FirebaseDatabase database;
DatabaseReference teories;
Capitole teorie;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_teorie);
//Firebase
database = FirebaseDatabase.getInstance();
teories = database.getReference("Capitole");
teorie_desc = (TextView)findViewById(R.id.teorie);
img1 = (ImageView)findViewById(R.id.img1);
img2 = (ImageView)findViewById(R.id.img2);
img3 = (ImageView)findViewById(R.id.img3);
img4 = (ImageView)findViewById(R.id.img4);
if(getIntent()!=null)
capitoleId= getIntent().getStringExtra("CapitoleId");
if(!capitoleId.isEmpty())
{
getDetailTeorie(capitoleId);
}
}
Picasso.with(getBaseContext()).load(teorie.getImg1()).into(img1);
Picasso.with(getBaseContext()).load(teorie.getImg2()).into(img2);
Picasso.with(getBaseContext()).load(teorie.getImg3()).into(img3);
Picasso.with(getBaseContext()).load(teorie.getImg4()).into(img4);
teorie_desc.setText(teorie.getDescription());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
Tot pe baza unui "RecyclerView" , acest cod java citeste din baza de date si
atribuie fiecarui capitol cate un ID pentru a diferentia continutul , generand
astfel automat aceeasi pagina xml dar cu continut diferit atribuit pentru
fiecare capitol din baza de date.
De asemenea se initiaza continutul din pagina xml corespondenta.