안녕하세요! 지금 DatepickerDialog를 이용해서 각 날짜를 선택하면 해당 날짜에 맞는 recyclerview 데이터를 출력하는 어플을 구현하려고 하는데 recyclerview 아이템의 값과 날짜의 값이 일치할때 데이터를 보여주는 식으로 데이터를 짜봤는데 이상하게 다른 날짜 값을 입력해도 계속 똑같은 아이템이 출력되더라고요... 혹시 코드상에 문제가 있는지 있다면 어떻게 고쳐야할지 알려주시면 정말 감사하겠습니다!
아래는 소스코드입니다.
package com.example.sportstab;
import android.app.DatePickerDialog;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.JsonArrayRequest;
import com.github.jhonnyx2012.horizontalpicker.DatePickerListener;
import org.joda.time.DateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
@RequiresApi(api = Build.VERSION_CODES.N)
public class FirstFragment<horizontalCalendar, root> extends Fragment implements DatePickerListener {
private List<Product_List> product_lists;
private RecyclerView recyclerView;
ProductAdapter adapter;
Button selectDate;
TextView date;
DatePickerDialog datePickerDialog;
int year;
int month;
int dayOfMonth;
Calendar calendar;
private JsonArrayRequest request;
private RequestQueue requestQueue;
public static FavoriteDatabase favoriteDatabase;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_first, container, false);
selectDate = root.findViewById(R.id.btnDate);
date = root.findViewById(R.id.tvSelectedDate);
selectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
date.setText(year + "년 " + month + "월 " + day + "일");
date.setText(year + "년 " + (month + 1) + "월 " + day + "일");
getData();
}
},year,month,dayOfMonth);
datePickerDialog.show();
}
});
recyclerView=(RecyclerView)root.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getContext()));
product_lists=new ArrayList<>();
favoriteDatabase= Room.databaseBuilder(getContext(),FavoriteDatabase.class,"myfavdb").allowMainThreadQueries().build();
//getData();
return root;
}
private void getData() {
Product_List product_list = new Product_List(22, "스페인 프리메라리가", "세비야 vs 레알 베티스" , "2020.06.12 05:00", "https://pngimage.net/wp-content/uploads/2018/06/sevilla-fc-logo-png-2.png",
"https://pngimage.net/wp-content/uploads/2018/06/real-betis-escudo-png-5.png");
Product_List product_list2 = new Product_List(0, "경기 정보가 없습니다.", "" , "", "",
"");
if(product_list.getId() == dayOfMonth)
{
product_lists.add(product_list);
}
else{
product_lists.add(product_list2);
}
//product_lists.add(product_list);
setupData(product_lists);
}
private void setupData(List<Product_List> product_lists) {
adapter=new ProductAdapter(product_lists,getContext());
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}
@Override
public void onDateSelected(DateTime dateSelected) {
Toast.makeText(getContext(),dateSelected.toString(),Toast.LENGTH_SHORT).show();
}
}