RecyclerView & ADAPTER 1/5 - Kotlin & Android#11

preview_player
Показать описание
Czym jest RecyclerView i jak wykorzystać jego potęgę! Co to Adapter i co ma wspólnego z widokami? Sprawdź!

Najnowszy Kompletny KURS KOTLINA dla początkujących (wszystko co musisz wiedzieć o Kotlinie na start):

Kotlin i Android wkraczają do gry! Kurs tworzenia aplikacji mobilnych dla każdego! Poznaj tajniki Androida, zanurz się w Android Studio i wykorzystaj potencjał Kotlin'a!

[Programowanie aplikacji mobilnych]
Tworzenie aplikacji mobilnych na system Android w języku Kotlin! Pierwszy taki całkowicie darmowy kurs na Polski YouTube. Jeśli masz w głowie niesamowity pomysł na aplikacje, ale brakuje ci warsztatu aby ją stworzyć, przybyło wybawienie!
Рекомендации по теме
Комментарии
Автор

UWAGA! UWAGA! UWAGA!

Od niedawna kotlinx.synthetic (czyli w skrócie fakt, że mogę odwołać się do widoku bezpośrednio przez jego ID) jest "DEPRECATED"! To oznacza, że nie jest to dłużej wspierane rozwiązanie. Aktualnie rekomendowane jest używanie ViewBinding! Specjalnie dla Ciebie przygotowałem wyjaśnienie jak się z tym rozprawić:

UWAGA! UWAGA! UWAGA! Po raz DRUGI!
Biblioteka android.support została zastąpiona przez androidx. Tutaj przydatne linki, które pozwolą zrozumieć jak migrować projekt.

Programowanie to dynamiczna dziedzina, dzisiaj najnowsze, jutro za stare ;)

Revolshen
Автор

Bardzo dobre podejście do nauczania. Prawdziwy talent nauczycielski co się nie często zdarza wśród programistów.

sadzolot
Автор

Ten Kurs to po prostu dobra robota, jeszcze z update' ami, genialna sprawa 😎

Micha-nsdb
Автор

Przy przerabianiu tej lekcji mimo kilkakrotnych prób wciąż miałem błędy. W końcu udało się je rozwiązać, postanowiłem je opisać dla początkujących (do których też się zaliczam), może oszczędzi to innym kłopotów.

Autor kursu używa windowsa, ja lubuntu, nie wiem czy to ma jakiś wpływ. Lekcje przerabiałem jakieś 2 tygodnie temu, czyli ponad rok od zamieszczenia tej lekcji na YT. W międzyczasie chyba były aktualizacje Android Studio i Kotlina - w tym upatruje przyczyn kłopotów.

Przy tworzeniu Empty Activity i próbie dodania do layoutu MainActivity RecyclerView nie miałem żadnej prośby o dodanie wymaganej biblioteki recyclerview-v7, po prostu RecyclerView dodał się. Doszedłem do wniosku, że w tej wersji Android Studio (3.5.2) już to jakoś zmienili.

Kłopoty zaczęły się przy tworzeniu layoutu XML contact_row. Jak w Root Tag napisałem: to miałem te same kłopoty co w komentarzach opisał Ada Pog, czyli szary layout i cokolwiek się dodało to było tylko kropką w lewym górnym rogu bez możliwości jakiejkolwiek zmiany położenia.

W końcu po skasowaniu contact_row i tworzeniu jego na nowo w Root Tag zostawiłem domyślne LinearLayout. Mogłem wtedy dodać przycisk i textview już na normalnym białym tle.

Niestety w kodzie nie pokazywały mi się podpowiedzi do rożnych poleceń, a przy próbie pisania ich były czerwoną czcionką. Jakoś doszedłem do tego, że w zależnościach w app w build.gradle tam gdzie są implementacje zamiast odwołania w implementacjach do biblioteki support: recyclerview-v7 jest następująca linijka:

implementation

a więc np. w MainActivity.kt i MainActivity.kt w sekcji import powinno być podobnie, zamiast odwołań do biblioteki typu import android.support.v7.*.* dodałem ręcznie

import

Kod stracił na czerwoności, poza jednym przypadkiem, w MainActivity w linijce:
recycler_view.layoutManager = LinearLayoutManager(this)

to co na prawo po "=" miałem na czerwono.

Po przerwie (dwa tygodnie) ponownie spróbowałem zabrać się za przerobienie lekcji i przy przeglądaniu kodu w build.gradle (Module app) pojawiły mi się podpowiedzi odnośnie nowszej wersji (było 1.0.0) i paru innych pozycji tam gdzie są implementacje. Po zamianie nazw na aktualne i wykonaniu podpowiedzi Android Studio żeby z synchronizować Gradle i uruchomić Android Studio jeszcze raz, automatycznie dodawały mi się już odpowiednie pozycje w sekcji import w MainActivity, przy próbie wpisania w fun onCreate:

recycler_view.layoutManager = LinearLayoutManager(this) - kolor czerwony znikł, a w sekcji import tym razem automatycznie dodało się:

import

Zmieniłem jeszcze w count_row we właściwościach linearLayout wysokość na wrap_content - bez tego po uruchomieniu programu na layou-cie miałem tylko jeden wiersz.

Podsumowując wszystko zaczęło mi działać po aktualizacjach, które pojawiły się po czasie, gdy zacząłem przerabiać lekcję. Może powyższe przyda się osobom, które będą miały podobne problemy.

PS.
Szkoda, że forum jest tylko dla użytkowników Facebooka, kiedyś jak tworzyłem konto chcieli nr telefonu, więc zrezygnowałem z konta. Miałem stworzyć ponownie tylko aby skorzystać z forum dla tego kursu, ale algorytm wykrywa, że podaje te same (rzeczywiste) dane uznając to za podejrzane i każą sobie przesłać najpierw zdjęcie, a później skan dowodu osobistego - no chyba ich @##$%*#$%#@#. Nigdy więcej jakiegokolwiek konta dla tych wyłudzaczy danych osobowych.

semjase
Автор

jak ktoś ma problem z funkcją:
override fun onCreateViewHolder
to zauważcie jak dacie implement members to funkcje różnią się od tych na filmie, na filmie jest:
override fun onCreateViewHolder(viewGrop:ViewGroup, pl:Int)
a w nowym Android Studio stworzy się tak:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):
czyli trzeba zamienić w kodzie te miejsca gdzie użył viewGrop na parent. Ja tego nie zauważyłem na początku i się wkurwiałem na tego Gropa ;)

maniek
Автор

Bardzo mi się podoba ta Twoja seria, nie pamiętam, kiedy ostatnio trafiłem na tak dobry tutorial. Bez zbędnego bulszitu, w kółko powtarzanych jakichś oczywistości albo odwoływania się do czegoś, o czym wcześniej nie wspomniano. Mówisz tak, jakbym ja sam chciał sobie to przedstawić, tj. prezentujesz materiał w taki sposób, że gdy przychodzi mi na myśl jakieś pytanie, Ty akurat na nie odpowiadasz (albo pauzuję filmik :D ) Dzięki :)

MrLuke
Автор

Chaos. Pierwsze lekcje wytłumaczone elegancko, człowiek usiadł do pisania, zrozumiał podstawy, rozbudował co było w odcinkach do 10, dopisał coś więcej. Teraz (szczególnie przy przejsciu na viewBinding, co samo w sobie stanowi wyzwanie) kod leci bez wyjaśniania; tu linijka tam linijka, tu view tam view, tu napiszcie to i tamto bez wnikania i potem nic z tego nie działa.

Endrju
Автор

Jeśli macie pusty ekran wystarczy dodać do linijki:
recyclerView.adapter = MyAdapter()

digir
Автор

przeanalizowałem komentarze jak i internet z 5 razy, , i aplikacja nadal nie chce mi się włączyć, ma ktoś może kod który mu działa żebym mógł go przeanalizować? oglądam ten filmik już 6 raz :<

AwPouk
Автор

@RevolShen, sporo sie zmienilo od publikacji a i kilka rzeczy pominales, ale po trzech dniach udalo mi sie na starych bibliotekach to zrobic, jak w odcinku. Teraz moge sprobowac zmigorwac do androidx.

Jezeli ktos ma pytania odnosnie odcinka to prosze pisac.

filip_g
Автор

Siema. Czy adapter to bardziej most czy obserwator?
Dzięki za odp.
Ps. Revol -> świetna robota :)

Astro
Автор

Uff... Świetny materiał ale nieco nie aktualny ;( . Dwa dni kombinowania ale udało się uruchomić apkę wykorzystując już ViewBinding . Przydałoby się by pod każdym filmem umieściłbyś kod z filmu. łatwiej jest wtedy analizować i poprawiać błędy, a na dodatek mógłbyś aktualizować ten kod - widzielibyśmy co się zmienia pod wpływem czasu i jak wprowadzać nowości do kodu ;) Pozdrawiam i przewijam do następnego filmu.

danielg
Автор

Mam coś takiego
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
{

})
}
i jak kliknę na przycisk to zmienia mi kolor co sześć przycisków a nie tylko jeden,
troche nad tym siedze już i nie mogę dojść dlaczego
POMOCY

juzek
Автор

Witam
Mam bazę danych na serwerze i aktualizacji dokonuje tylko wtedy gdy apka jest aktywna i nacisnąć przycisk, a chciałbym żeby to się aktualizowało np. co godzinę i nawet gdy apka jest zamknięta, próbowałem stworzyć servis ale nie wiem jak go zmusić do wykonywania pewnej części kodu co godzinę, miałbyś może czas i chęci ruszyć ten temat
Pozdrawiam

juzek
Автор

nie działa mi apka. zauwazyłem, ze u mnie nie podswietla view! i LayoutInflater!

januszprawdziwy
Автор

Nie działa mi recyclerView i nigdzie nie mogę znaleźć dlaczego. Kiedy w mainActivity wpisuje recyclerView.layoutManager = LinearLayoutManager(this) to wszystko podświetla mi na czerwono i wyświetla że jest błąd. Pomógłbyś?

stanisaw
Автор

Gdzie powinienem dopisać recyclerView.adapter = MyAdapter()?

krystiankubica
Автор

Siema, pytanko.
Dodaje kolejne objekty przez komende add(), ale one sie nie pokazuja w recyclerView. Wyczytalem w necie ze jest takie cos jak notifyDataSetChanged() ale nie wiem to czego to przypisac. Jakies propozycje ?

janwroblewski
Автор

Co dokładnie robi :
class MyViewHolder(val view: View):

jarosawfarkowski
Автор

w nowym layout, gdy dodaje cokolwiek, pojawia sie w górnym rogu i nie moge zmienic polozenia.

adapog