Good morning,
How do I reference a button in another activity? In main, I'm using another layout to inflate my list, and the button event is obviously returning null because it's not finding the view. Help.
private static String pesquisarDadosLivro;
private DadosLivrosAdapter adapter;
private static final String GOOGLE_LIVROS_URL =
"https://www.googleapis.com/books/v1/volumes?q= " + pesquisarDadosLivro;
private static final int DADOSLIVROS_ID_LOADER = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
Button pesquisarLivro = (Button) findViewById(R.id.pesquisar);
pesquisarLivro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText dadosLivro = (EditText) findViewById(R.id.dados_livro);
pesquisarDadosLivro = dadosLivro.getText().toString();
//Log.v("MainActivity", "Texto a ser pesquisado " + pesquisarDadosLivro);
}
});
ListView listView = (ListView) findViewById(R.id.lista);
adapter = new DadosLivrosAdapter(this, new ArrayList<DadosLivro>());
listView.setAdapter(adapter);
LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(DADOSLIVROS_ID_LOADER, null, this);
}
@Override
public android.content.Loader<List<DadosLivro>> onCreateLoader(int i, Bundle bundle) {
// Create a new loader for the given URL
return new DadosLivrosLoader(this, GOOGLE_LIVROS_URL);
}
@Override
public void onLoadFinished(android.content.Loader<List<DadosLivro>> loader, List<DadosLivro>
informacoesLivros) {
if (informacoesLivros != null && !informacoesLivros.isEmpty()) {
adapter.addAll(informacoesLivros);
}
}
@Override
public void onLoaderReset(android.content.Loader<List<DadosLivro>> loader) {
adapter.clear();
}
}
Hello, I solved the problem by inflating the main activity itself, as it contains the components that interact with the user and it is only 1 single screen, I found it more viable, however I am with another error, my http request returned 400, I need the Loader to be loaded after the button event, do you know how I can do this?
package com.example.android.listadelivros;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
implements LoaderCallbacks<List<DadosLivro>> {
private String pesquisarDadosLivro;
private DadosLivrosAdapter mAdapter;
private String GOOGLE_LIVROS_URL = null;
private static final int DADOSLIVROS_ID_LOADER = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button pesquisarLivro = (Button) findViewById(R.id.pesquisar);
pesquisarLivro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText dadosLivro = (EditText) findViewById(R.id.dados_livro);
pesquisarDadosLivro = dadosLivro.getText().toString();
GOOGLE_LIVROS_URL =
"https://www.googleapis.com/books/v1/volumes?q= " + pesquisarDadosLivro;
final LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(DADOSLIVROS_ID_LOADER, null,);
}
});
ListView listView = (ListView) findViewById(R.id.lista);
mAdapter = new DadosLivrosAdapter(this, new ArrayList<DadosLivro>());
listView.setAdapter(mAdapter);
}
@Override
public android.content.Loader<List<DadosLivro>> onCreateLoader(int i, Bundle bundle) {
return new DadosLivrosLoader(this, GOOGLE_LIVROS_URL);
}
@Override
public void onLoadFinished(android.content.Loader<List<DadosLivro>> loader, List<DadosLivro>
informacoesLivros) {
if (informacoesLivros != null && !informacoesLivros.isEmpty()) {
mAdapter.addAll(informacoesLivros);
}
}
@Override
public void onLoaderReset(android.content.Loader<List<DadosLivro>> loader) {
mAdapter.clear();
}
}