Доступ к функции из другого класса - PullRequest
1 голос
/ 18 апреля 2020

У меня есть 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);
        }
    }

}

1 Ответ

0 голосов
/ 18 апреля 2020

просто импортируйте имя класса, и вы можете использовать функцию из него. (функция и класс должны быть опубликованы c для использования)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...