У меня есть 4 класса в клике моего приложения. java, DatabaseHelper. java, homeframgment. java и recyclerAdapterhomesubjectList. java
У меня есть функция populateArrayList (); в homefragment, в котором я хочу вызывать каждый раз, когда вызывается onclick () {присутствует в recyclerAdapterHomesubjectList}. Может ли кто-нибудь помочь мне в достижении этого
homefragment ::
package com.example.app100.RecylerAdapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.app100.R;
import com.example.app100.Subject;
import com.example.app100.card_click;
import com.example.app100.ui.home.HomeFragment;
import java.util.ArrayList;
public class RecyclerAdapterHomeSubjectList extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<Subject> subject;
private Context context;
public RecyclerAdapterHomeSubjectList(ArrayList<Subject> a, Context context){
this.subject = a;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from((parent.getContext()));
View view = inflater.inflate(R.layout.card_home_subject, parent, false);
return new ViewHolder(view) {
};
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ImageView imageView = holder.itemView.findViewById(R.id.home_card_subject_imageview);
switch (position % 3) {
case 2:
imageView.setBackgroundResource(R.drawable.back1);
break;
case 1:
imageView.setBackgroundResource(R.drawable.back2);
break;
case 0:
imageView.setBackgroundResource(R.drawable.back3);
break;
}
Subject data = subject.get(position);
String name = data.subject_name;
TextView subject_name = holder.itemView.findViewById(R.id.home_card_subject_name);
subject_name.setText(name);
}
@Override
public int getItemCount() {
return subject.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
ViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context , card_click.class);
intent.putExtra("name" , subject.get(getAdapterPosition()).subject_name);
intent.putExtra("class_good" , subject.get(getAdapterPosition()).class_attended);
intent.putExtra("class_missed" , subject.get(getAdapterPosition()).class_missed);
intent.putExtra("credits",subject.get(getAdapterPosition()).credits);
context.startActivity(intent);
}
}
}
DatabaseHelper ::
package com.example.app100;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import androidx.annotation.Nullable;
import static androidx.constraintlayout.widget.Constraints.TAG;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String table_name = "SUBJECT_LIST";
private static final String COL0 = "ID";
private static final String COL1 = "NAME";
private static final String COL2 = "CREDITS";
private static final String COL3 = "CLASS_ATTENDED";
private static final String COL4 = "CLASS_MISSED";
public DatabaseHelper(@Nullable Context context) {
super(context, table_name, null, 6);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " + table_name + "("+
COL0+ " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL1 + " TEXT, " +
COL2 + " INTEGER, "+
COL3 + " INTEGER, "+
COL4 + " INTEGER);";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + table_name);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
boolean addData(String name, int credit , int good , int bad){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL1 , name);
contentValues.put(COL2 , credit);
contentValues.put(COL3 , good);
contentValues.put(COL4 , bad);
long result = db.insert(table_name , null , contentValues);
return result != -1;
}
public Cursor getdata(){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM SUBJECT_LIST;";
return db.rawQuery(query , null);
}
void append_data(String str, String name , int goodbad) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(str, goodbad);
int count = db.update(table_name, contentValues, "NAME = ?", new String[]{name});
Log.d(TAG, "blue button is pressed");
System.out.println(count);
}
}
cardclick:
package com.example.app100;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.TextView;
public class card_click extends AppCompatActivity {
TextView attendace_info;
ProgressBar progressBar;
TextView credits;
TextView progress_percent;
int bad;
int good;
Button add;
Button minus;
ImageButton performance;
String name;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_card_click);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.hide();
performance = findViewById(R.id.card_click_performance_add);
progress_percent = findViewById(R.id.card_click_progress_bar_percent);
attendace_info = findViewById(R.id.card_click_attendance_text);
progressBar = findViewById(R.id.card_click_progress_bar);
credits = findViewById(R.id.card_click_credits_show);
add = findViewById(R.id.card_click_add_button);
minus = findViewById(R.id.card_click_minus_button);
Intent intent = getIntent();
good = intent.getIntExtra("class_good", 0);
bad = intent.getIntExtra("class_missed", 0);
name = intent.getStringExtra("name");
credits.setText(String.valueOf(intent.getIntExtra("credits", 0)));
display();
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
good++;
databaseHelper.append_data("CLASS_ATTENDED", name , good);
display();
Cursor data = databaseHelper.getdata();
while(data.moveToNext()){
int a = data.getInt(3);
if( a > 0)
System.out.println("database has been updated");
}
}
});
minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bad++;
databaseHelper.append_data("CLASS_MISSED", name, bad);
display();
Cursor data = databaseHelper.getdata();
while(data.moveToNext()){
int b = data.getInt(4);
if( b > 1)
System.out.println("database has been updated");
}
}
});
performance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent(card_click.this, add_performace.class);
startActivity(intent1);
}
});
}
void display(){
int per = 100;
if(good+bad != 0)
per = (int)(good*100.0)/(good+bad);
String str = "You have atttended "+ (good) +
" out of " + (good + bad) +
" classes";
attendace_info.setText(str);
progressBar.setProgress(per);
progress_percent.setText(String.valueOf(per));
}
}
RecyclerAdapterHomeSubjectList:
package com.example.app100.RecylerAdapter;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.app100.R;
import com.example.app100.Subject;
import com.example.app100.card_click;
import com.example.app100.ui.home.HomeFragment;
import java.util.ArrayList;
public class RecyclerAdapterHomeSubjectList extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<Subject> subject;
private Context context;
public RecyclerAdapterHomeSubjectList(ArrayList<Subject> a, Context context){
this.subject = a;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from((parent.getContext()));
View view = inflater.inflate(R.layout.card_home_subject, parent, false);
return new ViewHolder(view) {
};
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ImageView imageView = holder.itemView.findViewById(R.id.home_card_subject_imageview);
switch (position % 3) {
case 2:
imageView.setBackgroundResource(R.drawable.back1);
break;
case 1:
imageView.setBackgroundResource(R.drawable.back2);
break;
case 0:
imageView.setBackgroundResource(R.drawable.back3);
break;
}
Subject data = subject.get(position);
String name = data.subject_name;
TextView subject_name = holder.itemView.findViewById(R.id.home_card_subject_name);
subject_name.setText(name);
}
@Override
public int getItemCount() {
return subject.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
ViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context , card_click.class);
intent.putExtra("name" , subject.get(getAdapterPosition()).subject_name);
intent.putExtra("class_good" , subject.get(getAdapterPosition()).class_attended);
intent.putExtra("class_missed" , subject.get(getAdapterPosition()).class_missed);
intent.putExtra("credits",subject.get(getAdapterPosition()).credits);
context.startActivity(intent);
}
}
}