]

Minggu, 11 November 2018

cara menangani onclik pada recyclerview dengan mudah menggunakan interface



package com.malik.bestenglish;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.ContentFrameLayout;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class ToolPilihJamHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    private Context context;
    private Activity activity;
    private OnJamItemClickListener jamItemClickListener;
    public TextView angkaJam;
    ToolPilihJamHolder(@NonNull View itemView, OnJamItemClickListener jamItemClickListener) {
        super(itemView);
        this.context = itemView.getContext();
        this.activity = (Activity)itemView.getContext();
        this.jamItemClickListener = jamItemClickListener;
        angkaJam = itemView.findViewById(R.id.itemJam);
        angkaJam.setOnClickListener(this);
    }

    @Override    public void onClick(View v) {
        jamItemClickListener.clik(v,getAdapterPosition());
    }
}


//--------------------------------------------------------------------------------------------
package com.malik.bestenglish;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
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 android.widget.Toast;

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

public class ToolJamAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{


    private OnJamItemClickListener clickListener;
    private ArrayList<String> number = new ArrayList<>();
    private Context context;
    private Activity activity;

    ToolJamAdapter(OnJamItemClickListener clickListener) {
        this.clickListener = clickListener;
    }
    public void updateData(ArrayList<String> number){
        this.number.clear();
        this.number.addAll(number);
        notifyDataSetChanged();
    }

    @NonNull    @Override    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        Context context = viewGroup.getContext();
        View v = LayoutInflater.from(context).inflate(R.layout.layout_pilih_jam,viewGroup,false);
        return new ToolPilihJamHolder(v,clickListener);
    }

    @Override    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
            if (viewHolder instanceof ToolPilihJamHolder){
                ToolPilihJamHolder jamHolder = (ToolPilihJamHolder)viewHolder;
                jamHolder.angkaJam.setText(number.get(i));
            }
    }

    @Override    public int getItemCount() {
        return number.size();
    }
}

//-----------------------------------------------------------------------------------------------------------------------------



package com.malik.bestenglish;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
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 android.widget.CalendarView;
import android.widget.Toast;

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 java.util.ArrayList;

public class LayoutHome extends Fragment{


    private Context context;
    private Activity activity;
    private ToolJamAdapter jamAdapter;
    private ArrayList<String> number;
    public static LayoutHome newInstance(){
        return new LayoutHome();
    }

    @Override    public void onAttach(Context context) {
        super.onAttach(context);
        this.context = context;
        this.activity = (Activity)context;
    }

    @Nullable    @Override    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View calView = inflater.inflate(R.layout.layout_home,container,false);
        homeViewActivity(calView);
        return calView;
    }

    @Override    public void onDetach() {
        super.onDetach();
    }

    void homeViewActivity(View calView){
        CalendarView calendarView = calView.findViewById(R.id.calendarView);
        RecyclerView pilihJam = calView.findViewById(R.id.pilihJam);
        pilihJam.setLayoutManager(new LinearLayoutManager(context));
        //number multiple        number = new ArrayList<>();
        for (int n = 8;n < 20 ; n++){
            number.add(String.valueOf(n+":00"));
        }

        OnJamItemClickListener listener = new OnJamItemClickListener() {
            @Override            public void clik(View v, int position) {
                Toast.makeText(activity.getApplicationContext(),"ini"+position,Toast.LENGTH_LONG).show();
            }
        };


        jamAdapter = new ToolJamAdapter(listener);
        jamAdapter.updateData(number);
        pilihJam.setAdapter(jamAdapter);

        //calendar view activity        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override            public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
                Toast.makeText(activity.getApplicationContext(),""+dayOfMonth+"-"+month+"-"+year,Toast.LENGTH_LONG).show();
            }
        });


    }
}