복구코드3

장원녕·2023년 6월 1일

package com.example.ms15;

import android.content.Intent;
import android.os.Bundle;
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.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import com.bumptech.glide.Glide;
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;
import java.util.List;

public class DetailsActivity extends AppCompatActivity {

private ViewPager2 viewPager;
private DataAdapter adapter;
private List<DataItem> dataItems = new ArrayList<>();
private int currentPosition = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recycle);

    viewPager = findViewById(R.id.viewPager);
    viewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);

    adapter = new DataAdapter();
    viewPager.setAdapter(adapter);

    // Retrieve the intent data
    Intent intent = getIntent();
    if (intent != null) {
        DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference().child("see");
        databaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                dataItems.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    String admissionFee = snapshot.child("Admission Fee").getValue(String.class);
                    String parkPrice = snapshot.child("ParkPrice").getValue(String.class);
                    String time = snapshot.child("Time").getValue(String.class);
                    String imageUrl = snapshot.child("Url").getValue(String.class);
                    DataItem dataItem = new DataItem(admissionFee, parkPrice, time, imageUrl);
                    dataItems.add(dataItem);
                }
                adapter.setData(dataItems);

                // 현재 position에 맞는 데이터를 보여줌
                if (currentPosition < dataItems.size()) {
                    viewPager.setCurrentItem(currentPosition, false);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                // Handle error
            }
        });
    }

    // ViewPager2의 현재 position을 기록
    viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            currentPosition = position;
        }
    });
}

private class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {

    private List<DataItem> dataItems = new ArrayList<>();

    public void setData(List<DataItem> dataItems) {
        this.dataItems = dataItems;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_data, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        DataItem dataItem = dataItems.get(position);
        holder.bind(dataItem);
    }

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

    class ViewHolder extends RecyclerView.ViewHolder {

        private TextView admissionFeeTextView;
        private TextView parkPriceTextView;
        private TextView timeTextView;
        private ImageView imageView;

        ViewHolder(@NonNull View itemView) {
            super(itemView);

            admissionFeeTextView = itemView.findViewById(R.id.admissionFeesTextView);
            parkPriceTextView = itemView.findViewById(R.id.parkPriceTextView);
            timeTextView = itemView.findViewById(R.id.timeTextView);
            imageView = itemView.findViewById(R.id.imageView);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {
                        // 클릭한 아이템의 이미지를 표시
                        DataItem clickedItem = dataItems.get(position);
                        clickedItem.setClicked(!clickedItem.isClicked());

                        // 해당 위치의 항목을 갱신
                        notifyItemChanged(position);
                    }
                }
            });
        }

        void bind(DataItem dataItem) {
            admissionFeeTextView.setText(dataItem.getAdmissionFee());
            parkPriceTextView.setText(dataItem.getParkPrice());
            timeTextView.setText(dataItem.getTime());

            // 클릭 여부에 따라 이미지 가시성을 설정
            if (dataItem.isClicked()) {
                Glide.with(itemView.getContext()).load(dataItem.getImageUrl()).into(imageView);
                imageView.setVisibility(View.VISIBLE);
            } else {
                imageView.setVisibility(View.GONE);
            }
        }
    }
}

}

profile
희망찬 개발자

0개의 댓글