package uk.ivanc.archimvvm.view; import android.content.Context; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.inputmethod.InputMethodManager; import java.util.List; import uk.ivanc.archimvvm.R; import uk.ivanc.archimvvm.RepositoryAdapter; import uk.ivanc.archimvvm.databinding.MainActivityBinding; import uk.ivanc.archimvvm.model.Repository; import uk.ivanc.archimvvm.viewmodel.MainViewModel; public class MainActivity extends AppCompatActivity implements MainViewModel.DataListener { private MainActivityBinding binding; private MainViewModel mainViewModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.main_activity); mainViewModel = new MainViewModel(this, this); binding.setViewModel(mainViewModel); setSupportActionBar(binding.toolbar); setupRecyclerView(binding.reposRecyclerView); } @Override protected void onDestroy() { super.onDestroy(); mainViewModel.destroy(); } @Override public void onRepositoriesChanged(List<Repository> repositories) { RepositoryAdapter adapter = (RepositoryAdapter) binding.reposRecyclerView.getAdapter(); adapter.setRepositories(repositories); adapter.notifyDataSetChanged(); hideSoftKeyboard(); } private void setupRecyclerView(RecyclerView recyclerView) { RepositoryAdapter adapter = new RepositoryAdapter(); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); } private void hideSoftKeyboard() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(binding.editTextUsername.getWindowToken(), 0); } }