Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2017 수원 안드로이드 라이브러리 스터디 - 안드기초 3/4
Search
jwk1014
June 27, 2017
Programming
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2017 수원 안드로이드 라이브러리 스터디 - 안드기초 3/4
시간 : 2017.06.23 (금) 20시 ~ 22시 (2시간)
장소 : 수원역 유앤아이 스터디룸 O룸
참여자 : 7명
jwk1014
June 27, 2017
More Decks by jwk1014
See All by jwk1014
2017 iOS 앱 스터디 8주차 - Alamofire Image & Realm
jwk1014
0
260
2017 iOS 앱 스터디 7주차 - Alamofire & Realm
jwk1014
0
120
2017 iOS 앱 스터디 6주차 - ScrollView paging & GCD & 날씨앱준비
jwk1014
0
150
2017 iOS 앱 스터디 5주차 - TableView refresh & ScrollView paging
jwk1014
0
95
2017 iOS 앱 스터디 4주차 - TableView
jwk1014
1
170
2017 iOS 앱스터디 3주차 - CocoaPods & Segue(show) & TableView
jwk1014
0
97
2017 iOS 앱스터디 2주차 - 이미지 & 다이얼로그 & TextField
jwk1014
0
94
2017 iOS 앱 스터디 1주차 - 프로젝트 생성 및 UI
jwk1014
0
170
2017 수원 안드로이드 라이브러리 스터디 - 안드기초 1/4
jwk1014
0
110
Other Decks in Programming
See All in Programming
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
440
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
930
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
Speed Design
sergeychernyshev
33
2.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
GitHub's CSS Performance
jonrohan
1033
470k
ラッコキーワード サービス紹介資料
rakko
1
5.4M
Building AI with AI
inesmontani
PRO
1
1.3k
Crafting Experiences
bethany
1
380
Designing for Timeless Needs
cassininazir
1
530
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Transcript
03-Library&RecyclerView Android Basic
Library
03 - Library & RecyclerView build.gradle (Project) оؘ ࠁח repositories
উী ਤ৬ э mavenCentral()ਸ ୶оפ.
03 - Library & RecyclerView build.gradle (Module: app) build.gradle(Module:app)ੌ۽ زೞৈ
рী extۄח ਸ ٜ݅Ҋ ਤ৬ э ࢿೞৈ ߡ ंܳ ҙܻೞѷणפ. dependenciesب ਤ৬ э ղਊਵ۽ ٮۄ೧ࣁਃ. ( ী ࠂࢎೡ ࣻ ח ఫझо णפ.)
03 - Library & RecyclerView build.gradle (Module: app) ext {
androidSupport = "25.3.1" gson = "2.8.1" okhttp = "3.8.1" retrofit = "2.3.0" glide = "3.8.0" glideOkhttp = "1.5.0" } compile "com.android.support:appcompat-v7:${androidSupport}" compile "com.android.support.constraint:constraint-layout:1.0.2" compile "com.android.support:recyclerview-v7:${androidSupport}" compile "com.google.code.gson:gson:${gson}" compile "com.squareup.okhttp3:okhttp:${okhttp}" compile "com.squareup.okhttp3:okhttp-urlconnection:${okhttp}" compile "com.squareup.retrofit2:retrofit:${retrofit}" compile "com.squareup.retrofit2:converter-gson:${retrofit}" compile "com.github.bumptech.glide:glide:${glide}" compile "com.github.bumptech.glide:okhttp3-integration:${glideOkhttp}" ${ܴ} ޙߨਸ ࢎਊೞӝ ਤ೧ࢲח Ӓր ٮ১(‘)о ইצ हٮ১(“)উীࢲ оמפ. ৽ଃ ߡ ंٜ 2017-06-22ী ഛੋೠ ୭नߡंੑפ.
Application
03 - Library & RecyclerView Application android.app.Application ېझܳ ࢚ࣘ߉ח MyApplicationېझܳ
ࢤࢿפ.
03 - Library & RecyclerView Application manifestsܳ ৌҊࢲ <application> కӒী
android:name ࣘࢿਸ ਤ৬ э ղਊਵ۽ ୶оפ.
03 - Library & RecyclerView Application Application ېझܳ ࢚ࣘ߉Ҋ, manifests
<application>కӒ android:nameী ୶оػ ېझח জ ԁઉо ெ ٸ о प೯غח ېझੑפ. Glide ݫݽܻ ୭ࢎਊ ࢸਸ ਤ೧ ਤ৬ э ղਊਸ ࢿ೧ࣁਃ.
Glide
03 - Library & RecyclerView Glide NBOJGFTUTܳৌҊੋఠ֔ࢎਊਸਤ೧ਤ৬эಌ࣌ਸ֍যࣁਃ <uses-permission android:name="android.permission.INTERNET"/>
03 - Library & RecyclerView Glide BDUJWJUZ@NBJOYNMীਤ৬э*NBHF7JFXܳ֍যࣁਃ
03 - Library & RecyclerView Glide IUUQTSBXHJUIVCVTFSDPOUFOUDPNCVNQUFDIHMJEFNBTUFSTUBUJDHMJEF@MPHPQOH
03 - Library & RecyclerView Glide
03 - Library & RecyclerView पण Glide
RecyclerView
03 - Library & RecyclerView RecyclerView BDUJWJUZ@NBJOYNM <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>
03 - Library & RecyclerView RecyclerView %BUB$MBTT
03 - Library & RecyclerView RecyclerView MJTU@DPOUFOUYNM <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="100dp"> <TextView android:id="@+id/list_content_textview_rank" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:layout_marginStart="5dp" android:text="ࣽਤ"/> <ImageView android:id="@+id/list_content_imageview" android:layout_width="100dp" android:layout_height="100dp" android:layout_toRightOf="@+id/list_content_textview_rank" android:layout_toEndOf="@+id/list_content_textview_rank" android:src="@mipmap/ic_launcher"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_toEndOf="@+id/list_content_imageview" android:layout_toRightOf="@+id/list_content_imageview" android:layout_marginRight="10dp" android:layout_marginEnd="10dp" android:layout_marginBottom="5dp" android:orientation="vertical"> <TextView android:id="@+id/list_content_textview_title" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:gravity="center_vertical" android:ellipsize="end" android:textSize="20sp" android:textStyle="bold" android:text="ઁݾ"/> <TextView android:id="@+id/list_content_textview_title_en" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center_vertical" android:text="ޙઁݾ"/> <TextView android:id="@+id/list_content_textview_title_admission" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center_vertical" android:text="ҙۈо"/> <TextView android:id="@+id/list_content_textview_title_releaseDate" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center_vertical" android:text="ѐࠉੌ"/> </LinearLayout> </RelativeLayout>
03 - Library & RecyclerView RecyclerView 7JFX)PMEFS public class ExRecyclerViewHolder
extends RecyclerView.ViewHolder { private TextView tvRank, tvTitle, tvTitleEn, tvAdmission, tvReleaseDate; private ImageView imageView; public ExRecyclerViewHolder(View v){ super(v); tvRank = (TextView)v.findViewById(R.id.list_content_textview_rank); imageView = (ImageView)v.findViewById(R.id.list_content_imageview); tvTitle = (TextView)v.findViewById(R.id.list_content_textview_title); tvTitleEn = (TextView)v.findViewById(R.id.list_content_textview_title_en); tvAdmission = (TextView)v.findViewById(R.id.list_content_textview_title_admission); tvReleaseDate = (TextView)v.findViewById(R.id.list_content_textview_title_releaseDate); } public void setData(MovieData item){ //TODO } }
03 - Library & RecyclerView RecyclerView "EBQUFS public class ExRecyclerViewAdapter
extends RecyclerView.Adapter<ExRecyclerViewHolder> { private List<MovieData> list; //ڸ ղਊٜ ٜযח List public ExRecyclerViewAdapter(List<MovieData> list){ this.list = list; } @Override public ExRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //parent = ೠೠ Viewٜਸ धਵ۽ оח ࠗݽView View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_content,parent,false); //R.layout.list_content ݽনਸ View۽ ࢤࢿ return new ExRecyclerViewHolder(v); //ViewHolder ࢤࢿ റ ܻఢ //ViewHolderۆ ೠী ೠ Viewܳ ҙܻೞח ېझ } @Override public void onBindViewHolder(ExRecyclerViewHolder holder, int position) { //holder = onCreateViewHolderীࢲ ࢤࢿ೧ળ ViewHolder // position = അ ݻߣ૩ ੋ MovieData item = list.get(position); //listীࢲ ೧ ߣ૩ itemਸ оઉয়ӝ holder.setData(item); //ViewHolderীѱ itemਸ Ѥ֎য ೧ ߣ૩ী ݏח ղਊਸ ੜदೞب۾ ೣ } @Override public int getItemCount() { return list.size(); // ୨ ݻѐ ਸ ڸਕঠೞח } }
03 - Library & RecyclerView RecyclerView .BJO"DUJWJUZ public class MainActivity
extends AppCompatActivity{ private LinearLayoutManager linearLayoutManager; private ExRecyclerViewAdapter viewAdapter; private List<MovieData> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview); linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); list = new ArrayList<>(); for(int i=0;i<10;i++) list.add(new MovieData()); recyclerView.setAdapter(viewAdapter = new ExRecyclerViewAdapter(list)); } }
03 - Library & RecyclerView RecyclerView झܽࢫ
03 - Library & RecyclerView पण RecyclerView
03 - Library & RecyclerView public class RetrofitManager { private
static RetrofitManager manager; private RetrofitUrl url; public static RetrofitManager getInstance(){ if(manager == null) manager = new RetrofitManager(); return manager; } public static void clearInstance(){ manager = null; } private RetrofitManager(){ OkHttpClient client = new OkHttpClient.Builder().build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(RetrofitUrl.BASE_URL) .addConverterFactory(GsonConverterFactory.create(new Gson())) .client(client) .build(); url = retrofit.create(RetrofitUrl.class); } public RetrofitUrl getUrls(){ return url; } public interface RetrofitUrl{ String BASE_URL = "http://movie.daum.net"; @GET("/data/movie/movie_info/ticket_rank_no_mid.json") Call<MovieResponse> rankList( @Query("pageNo") int pageNo, @Query("pageSize") int pageSize ); } } RecyclerView 3FUSPGJU.BOBHFS
03 - Library & RecyclerView RecyclerView 7JFX)PMEFS public class ExRecyclerViewHolder
extends RecyclerView.ViewHolder { private TextView tvRank, tvTitle, tvTitleEn, tvAdmission, tvReleaseDate; private ImageView imageView; public ExRecyclerViewHolder(View v){ super(v); tvRank = (TextView)v.findViewById(R.id.list_content_textview_rank); imageView = (ImageView)v.findViewById(R.id.list_content_imageview); tvTitle = (TextView)v.findViewById(R.id.list_content_textview_title); tvTitleEn = (TextView)v.findViewById(R.id.list_content_textview_title_en); tvAdmission = (TextView)v.findViewById(R.id.list_content_textview_title_admission); tvReleaseDate = (TextView)v.findViewById(R.id.list_content_textview_title_releaseDate); } public void setData(MovieData item){ tvRank.setText(""+item.getRank().getRanking()); if(item.getPhoto() != null && item.getPhoto().getFullname() != null) Glide.with(itemView.getContext()).load(item.getPhoto().getFullname()).into(imageView); tvTitle.setText(item.getTitleKo()); if(item.getTitleEn() != null) tvTitleEn.setText(item.getTitleEn()); if(item.getAdmissionDesc() != null) tvAdmission.setText(item.getAdmissionDesc()); if(item.getReleaseDateStr() != null) tvReleaseDate.setText(item.getReleaseDateStr()); } }
03 - Library & RecyclerView public class MainActivity extends AppCompatActivity
implements Callback<MovieResponse>{ private LinearLayoutManager linearLayoutManager; private ExRecyclerViewAdapter viewAdapter; private List<MovieData> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview); linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); recyclerView.setAdapter(viewAdapter = new ExRecyclerViewAdapter(list = new ArrayList<>())); RetrofitManager.getInstance().getUrls().rankList(1,10).enqueue(this); } @Override public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) { MovieResponse movieResponse = response.body(); if(movieResponse != null){ for(MovieData movieData:movieResponse.getData()){ String rd = movieData.getReleaseDate(); if(rd != null) movieData.setReleaseDateStr(String.format("%s֙ %sਘ %sੌ ѐࠉ”, rd.substring(0,4),rd.substring(4,6),rd.substring(6,8))); } list.addAll(movieResponse.getData()); viewAdapter.notifyDataSetChanged(); }else Toast.makeText(MainActivity.this,"ؘఠ য়ܨ",Toast.LENGTH_SHORT).show(); } @Override public void onFailure(Call<MovieResponse> call, Throwable t) { Toast.makeText(MainActivity.this,"֎ਕ য়ܨ",Toast.LENGTH_SHORT).show(); Log.e("Retrofit","rankList",t); } } RecyclerView .BJO"DUJWJUZ
03 - Library & RecyclerView RecyclerView झܽࢫ
SwipeRefreshLayout
03 - Library & RecyclerView SwipeRefreshLayout BDUJWJUZ@NBJOYNM <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/swipeRefreshLayout"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout>
03 - Library & RecyclerView SwipeRefreshLayout .BJO"DUJWJUZ public class MainActivity
extends AppCompatActivity implements Callback<MovieResponse>, SwipeRefreshLayout.OnRefreshListener{ private SwipeRefreshLayout swipeRefreshLayout; private LinearLayoutManager linearLayoutManager; private ExRecyclerViewAdapter viewAdapter; private List<MovieData> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipeRefreshLayout); swipeRefreshLayout.setOnRefreshListener(this); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview); linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); recyclerView.setAdapter(viewAdapter = new ExRecyclerViewAdapter(list = new ArrayList<>())); swipeRefreshLayout.setRefreshing(true); onRefresh(); } @Override public void onRefresh() { list.clear(); viewAdapter.notifyDataSetChanged(); RetrofitManager.getInstance().getUrls().rankList(1,10).enqueue(this); }
03 - Library & RecyclerView SwipeRefreshLayout .BJO"DUJWJUZ @Override public void
onResponse(Call<MovieResponse> call, Response<MovieResponse> response) { MovieResponse movieResponse = response.body(); if(movieResponse != null){ for(MovieData movieData:movieResponse.getData()){ String rd = movieData.getReleaseDate(); if(rd != null) movieData.setReleaseDateStr(String.format("%s֙ %sਘ %sੌ ѐࠉ", rd.substring(0,4),rd.substring(4,6),rd.substring(6,8))); } list.addAll(movieResponse.getData()); viewAdapter.notifyDataSetChanged(); }else{ Toast.makeText(MainActivity.this,"ؘఠ য়ܨ",Toast.LENGTH_SHORT).show(); } swipeRefreshLayout.setRefreshing(false); } @Override public void onFailure(Call<MovieResponse> call, Throwable t) { Toast.makeText(MainActivity.this,"֎ਕ য়ܨ",Toast.LENGTH_SHORT).show(); Log.e("Retrofit","rankList",t); swipeRefreshLayout.setRefreshing(false); } }
03 - Library & RecyclerView SwipeRefreshLayout झܽࢫ
03 - Library & RecyclerView पण SwipeRefreshLayout
Last Position Listener
03 - Library & RecyclerView 마지막 칸 도달 여부 Listener
.BJO"DUJWJUZ public class MainActivity extends AppCompatActivity implements Callback<MovieResponse>, SwipeRefreshLayout.OnRefreshListener{ private SwipeRefreshLayout swipeRefreshLayout; private LinearLayoutManager linearLayoutManager; private ExRecyclerViewAdapter viewAdapter; private List<MovieData> list; private int page = 1; private boolean loading = false; private boolean more = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipeRefreshLayout); swipeRefreshLayout.setOnRefreshListener(this); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview); linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL)); recyclerView.setAdapter(viewAdapter = new ExRecyclerViewAdapter(list = new ArrayList<>())); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if(more && !loading) { int visibleItemCount = recyclerView.getChildCount(); int totalItemCount = linearLayoutManager.getItemCount(); int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition(); if((totalItemCount - visibleItemCount) <= (firstVisibleItem + 3)) { dataLoad(); } } } }); swipeRefreshLayout.setRefreshing(true); onRefresh();
03 - Library & RecyclerView 마지막 칸 도달 여부 Listener
3FDZDMFS7JFX0O4DSPMM-JTUFOFS recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if(more && !loading) { int visibleItemCount = recyclerView.getChildCount(); int totalItemCount = linearLayoutManager.getItemCount(); int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition(); if((totalItemCount - visibleItemCount) <= (firstVisibleItem + 3)) { dataLoad(); } } } });
03 - Library & RecyclerView 마지막 칸 도달 여부 Listener
.BJO"DUJWJUZ private void dataLoad(){ loading = true; RetrofitManager.getInstance().getUrls().rankList(page,10).enqueue(this); } @Override public void onRefresh() { list.clear(); viewAdapter.notifyDataSetChanged(); page = 1; more = true; dataLoad(); }
03 - Library & RecyclerView @Override public void onResponse(Call<MovieResponse>
call, Response<MovieResponse> response) { Log.i("MainActivity","onResponse"); MovieResponse movieResponse = response.body(); if(movieResponse != null){ for(MovieData movieData:movieResponse.getData()){ String rd = movieData.getReleaseDate(); if(rd != null) movieData.setReleaseDateStr(String.format("%s֙ %sਘ %sੌ ѐࠉ”, rd.substring(0,4),rd.substring(4,6),rd.substring(6,8))); } list.addAll(movieResponse.getData()); viewAdapter.notifyDataSetChanged(); page++; if(list.size() >= movieResponse.getCount()) more = false; }else{ Toast.makeText(MainActivity.this,"ؘఠ য়ܨ",Toast.LENGTH_SHORT).show(); } swipeRefreshLayout.setRefreshing(false); loading = false; } @Override public void onFailure(Call<MovieResponse> call, Throwable t) { Toast.makeText(MainActivity.this,"֎ਕ য়ܨ",Toast.LENGTH_SHORT).show(); Log.e("Retrofit","rankList",t); swipeRefreshLayout.setRefreshing(false); loading = false; } 마지막 칸 도달 여부 Listener .BJO"DUJWJUZ
03 - Library & RecyclerView पण 마지막 칸 도달 여부
Listener
03 - Library & RecyclerView 다음시간에는 *OUFOU TUBSU"DUJWJUZ &YUSB TUBSU"DUJWJUZ'PS3FTVMU
PWFSSJEF1FOEJOH5SBOTJUJPO ܲজৌӝ PWFSSJEF1FOEJOH5SBOTJUJPOࢎਊೞӝਤ೧SFTBOJNীগפݫ࣌YNM୶о )BOEMFS 5ISFBE ٍ۽оӝ־ܰݶজઙܐ TVQQPSUFE"DUJPO#BS UJUMF IPNF"T6Q "MFSU%JBMPH DBODFM QPTJUJWF 42-JUF 42-JUF0QFO)FMQFS 42-ޙߨDSFBUFUBCMF TFMFDU JOTFSU VQEBUF EFMFUFܳݽܰदח࠙झఠ٣өҕࠗ೧ࣁਃ ਘਃੌਸਵ۽উ٘۽٘ӝୡઙܐറ%BHHFSࠗఠۄ࠳۞ܻझఠ٣दפ
궁금한점은지금질문해주세요 ࣻস լणפ