편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.06.23

    안드로이드 스튜디오 horizontal Date picker 일정 연동하기 질문드립니다.


    안녕하세요! 현재 안드로이드 스튜디오를 통해서 날짜별로 그 일정에 맞는 축구 경기를 보여주게 하는 식의 어플을 만들고자 하는데 Horizontal Date Picker를 통해서 날짜를 이동하면서 볼 생각으로 구현중입니다.

    현재 Date Picker까진 구현을 했는데 여기에 OnDateSelected 함수를 통해서 데이터와 날짜 연동을 해야할 것 같은데 어떻게 연동을 해야할지 모르겠습니다. 혹시라도 아시는분있으면 제발 답변 부탁드립니다.

    아래는 전체 소스코드입니다.

    package com.example.sportstab;
    
    import android.graphics.Color;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    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 com.github.jhonnyx2012.horizontalpicker.HorizontalPicker;
    
    import org.joda.time.DateTime;
    
    import java.util.ArrayList;
    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;
    
    
        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);
    
            HorizontalPicker picker = (HorizontalPicker)root.findViewById(R.id.datePicker);
            picker.setListener(this)
                    .setDays(120)
                    .setOffset(7)
                    .setDateSelectedColor(Color.DKGRAY)
                    .setDateSelectedTextColor(Color.DKGRAY)
                    .setMonthAndYearTextColor(Color.DKGRAY)
                    .setTodayButtonTextColor(getResources().getColor(R.color.colorPrimary))
                    .setTodayDateTextColor(getResources().getColor(R.color.colorPrimary))
                    .setTodayDateBackgroundColor(Color.GRAY)
                    .setUnselectedDayTextColor(Color.DKGRAY)
                    .setDayOfWeekTextColor(Color.DKGRAY)
                    .setUnselectedDayTextColor(getResources().getColor(R.color.primaryTextColor))
                    .showTodayButton(false)
                    .init();
    
            picker.setBackgroundColor(Color.LTGRAY);
            picker.setDate(new DateTime());
    
            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_lists.add(new Product_List(1, "스페인 프리메라리가", "세비야 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_lists.add(new Product_List(2, "스페인 프리메라리가", "그라나다 vs 헤타페" , "2020.06.13 02:30", "https://files.proyectoclubes.com/granada/201612/662x372c_22140637662x372a_15120636escudo-web.jpg",
                    "https://1.bp.blogspot.com/-R8eElyn20qI/U-8wr94iRfI/AAAAAAAADa8/xzMGNT_zFhA/s72-c/Logo%2BGetafe%2BCF.png"));
    
            product_lists.add(new Product_List(3, "   독일 분데스리가", "호펜하임 vs 라이프치히" , "2020.06.13 03:30", "https://pngimage.net/wp-content/uploads/2018/06/hoffenheim-png-3.png",
                    "https://pngimage.net/wp-content/uploads/2018/06/rb-leipzig-logo-png-1.png"));
            product_lists.add(new Product_List(4, "스페인 프리메라리가", "  발렌시아 vs 레반테" , "2020.06.13 05:00", "https://pngimage.net/wp-content/uploads/2018/06/valencia-cf-png-4.png",
                    "http://3.bp.blogspot.com/-IBRaWX6bryU/VmNNHHJMSMI/AAAAAAAACfM/nPI87qrdx1Y/s320/Levante%2BUD%2BLogo.png"));
            product_lists.add(new Product_List(5, "스페인 프리메라리가", " 에스파뇰 vs 알라베스" , "2020.06.13 21:00", "https://pngimage.net/wp-content/uploads/2018/06/rcd-espanyol-png-2.png",
                    "https://pngimage.net/wp-content/uploads/2018/05/alaves-logo-png-6.png"));
            product_lists.add(new Product_List(6, "   독일 분데스리가", "뒤셀도르프 vs 도르트문트" , "2020.06.13 22:30", "https://2.bp.blogspot.com/-AyfT671coEE/U_YH-TnQeTI/AAAAAAAADpo/99L8_eOEBck/s1600/Logo%2BFortuna%2BDusselsdorf.png",
                    "https://pngimage.net/wp-content/uploads/2018/05/borussia-dortmund-logo-png-7.png"));
            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();
        }
    }
    
  • 프로필 남준식님의 편집
    날짜2020.06.23

    안드로이드 스튜디오 horizontal Date picker 일정 연동하기 질문드립니다.


    안녕하세요! 현재 안드로이드 스튜디오를 통해서 날짜별로 그 일정에 맞는 축구 경기를 보여주게 하는 식의 어플을 만들고자 하는데 Horizontal Date Picker를 통해서 날짜를 이동하면서 볼 생각으로 구현중입니다. 현재 Date Picker까진 구현을 했는데 여기에 OnDateSelected 함수를 통해서 데이터와 날짜 연동을 해야할 것 같은데 도저히 어떻게 연동을 해야할지 감이 안잡히네요 ㅠㅠ 혹시라도 아시는분있으면 제발 답변 부탁드립니다...

    아래는 전체 소스코드입니다.

    package com.example.sportstab;

    import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; 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 com.github.jhonnyx2012.horizontalpicker.HorizontalPicker;

    import org.joda.time.DateTime;

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

    @RequiresApi(api = Build.VERSION_CODES.N) public class FirstFragment extends Fragment implements DatePickerListener {

    private List<Product_List> product_lists;
    private RecyclerView recyclerView;
    ProductAdapter adapter;
    
    
    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);
    
        HorizontalPicker picker = (HorizontalPicker)root.findViewById(R.id.datePicker);
        picker.setListener(this)
                .setDays(120)
                .setOffset(7)
                .setDateSelectedColor(Color.DKGRAY)
                .setDateSelectedTextColor(Color.DKGRAY)
                .setMonthAndYearTextColor(Color.DKGRAY)
                .setTodayButtonTextColor(getResources().getColor(R.color.colorPrimary))
                .setTodayDateTextColor(getResources().getColor(R.color.colorPrimary))
                .setTodayDateBackgroundColor(Color.GRAY)
                .setUnselectedDayTextColor(Color.DKGRAY)
                .setDayOfWeekTextColor(Color.DKGRAY)
                .setUnselectedDayTextColor(getResources().getColor(R.color.primaryTextColor))
                .showTodayButton(false)
                .init();
    
        picker.setBackgroundColor(Color.LTGRAY);
        picker.setDate(new DateTime());
    
        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_lists.add(new Product_List(1, "스페인 프리메라리가", "세비야 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_lists.add(new Product_List(2, "스페인 프리메라리가", "그라나다 vs 헤타페" , "2020.06.13 02:30", "https://files.proyectoclubes.com/granada/201612/662x372c_22140637662x372a_15120636escudo-web.jpg",
                "https://1.bp.blogspot.com/-R8eElyn20qI/U-8wr94iRfI/AAAAAAAADa8/xzMGNT_zFhA/s72-c/Logo%2BGetafe%2BCF.png"));
    
        product_lists.add(new Product_List(3, "   독일 분데스리가", "호펜하임 vs 라이프치히" , "2020.06.13 03:30", "https://pngimage.net/wp-content/uploads/2018/06/hoffenheim-png-3.png",
                "https://pngimage.net/wp-content/uploads/2018/06/rb-leipzig-logo-png-1.png"));
        product_lists.add(new Product_List(4, "스페인 프리메라리가", "  발렌시아 vs 레반테" , "2020.06.13 05:00", "https://pngimage.net/wp-content/uploads/2018/06/valencia-cf-png-4.png",
                "http://3.bp.blogspot.com/-IBRaWX6bryU/VmNNHHJMSMI/AAAAAAAACfM/nPI87qrdx1Y/s320/Levante%2BUD%2BLogo.png"));
        product_lists.add(new Product_List(5, "스페인 프리메라리가", " 에스파뇰 vs 알라베스" , "2020.06.13 21:00", "https://pngimage.net/wp-content/uploads/2018/06/rcd-espanyol-png-2.png",
                "https://pngimage.net/wp-content/uploads/2018/05/alaves-logo-png-6.png"));
        product_lists.add(new Product_List(6, "   독일 분데스리가", "뒤셀도르프 vs 도르트문트" , "2020.06.13 22:30", "https://2.bp.blogspot.com/-AyfT671coEE/U_YH-TnQeTI/AAAAAAAADpo/99L8_eOEBck/s1600/Logo%2BFortuna%2BDusselsdorf.png",
                "https://pngimage.net/wp-content/uploads/2018/05/borussia-dortmund-logo-png-7.png"));
        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();
    }
    

    }