Skip to content

Instantly share code, notes, and snippets.

View travisdachi's full-sized avatar
🖖
Live long and prosper

Travis P travisdachi

🖖
Live long and prosper
View GitHub Profile
abstract class ItemViewHolder<T : Any, VH>(itemView: View) : RecyclerView.ViewHolder(itemView) {
lateinit var item: T
var onClick: ((view: View, position: Int, holder: VH, item: T) -> Unit)? = null
init {
itemView.setOnClickListener { callOnClick(it) }
}
fun callOnClick(view: View) {
onClick?.let {
public class Apis {
public static StarWarsApi getSwarWarsApi() {
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://swapi.co/api/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
return retrofit.create(StarWarsApi.class);
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
SwipeRefreshLayout swipeRefreshLayout;
FilmAdapter filmAdapter;
StarWarsApi starWarsApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public class MainActivity extends AppCompatActivity implements HomeContract.HomeView {
RecyclerView recyclerView;
SwipeRefreshLayout swipeRefreshLayout;
FilmAdapter filmAdapter;
HomeContract.HomePresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public class HomePresenter implements HomeContract.HomePresenter {
private HomeContract.HomeView view;
private StarWarsApi starWarsApi;
public HomePresenter(HomeContract.HomeView view) {
this.view = view;
starWarsApi = Apis.getSwarWarsApi();
view.showTitle("All Star Wars Films");
}
public interface HomeContract {
interface HomeView {
void showLoading();
void hideLoading();
void showTitle(String title);
void showMessage(String message);
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.PersonHolder> {
private List<Person> list;
public PersonAdapter(@NonNull List<Person> list) {
this.list = list;
}
@Override
public PersonHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public class Person {
public String name;
public int age;
public boolean isChecked;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
List<Person> people;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
public class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}