A grid with 10 strings, just a display grid in an Activity.
I know that I am calling the adapter twice, but I do not know how to call it once to load my data.
I read the Android documentation, and saw that I can use a GridView to receive my ListView of arrays to create the view I need. But, I saw examples with ImageView (has a set method in the getView to load the images), but I can not load my ListView. I do not know where to set the arrays, if it would be in the getView() method of my adapter OR in the main activity. (probably getView()).
Here is my code and the exception:
Classes;
Activity;
public class ConsultaSinistroActivity extends Activity {
private static Context context;
private static String idEvento;
private GridView gridView;
private List<String[]> lstStrings;
static final String[] cabecalho = new String[] { "No. Sinistro",
"Data Ocorrencia", "Tipo de Sinistro", "Sucursal", "Ramo",
"Apolice", "Tipo", "Endereco", "Nro", "Complemento", "Bairro",
"CEP", "Cidade", "Estado" };
static final String[] sinistroTesteUm = new String[] { "12345678",
"01/09/2012", "Acidente Carro", "499", "1391", "823752", "C",
"Rua Aberte Douglas", "33", "Complemento", "Vila Vera",
"04272-000", "São Paulo", "SP" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_consulta_sinistro);
context = this;
lstStrings = new ArrayList<String[]>();
lstStrings.add(sinistroTesteUm);
gridView = (GridView) findViewById(R.id.gridViewSinistro);
gridView.setAdapter(new ConsultaSinistroAdapter(this, lstStrings));
}
/**
* @return the idEvento
*/
public static String getIdEvento() {
return idEvento;
}
/**
* @param idEvento
* the idEvento to set
*/
public static void setIdEvento(String idEvento) {
ConsultaSinistroActivity.idEvento = idEvento;
}
}
Adapter:
public class ConsultaSinistroAdapter extends BaseAdapter {
private Context context;
private List<String[]> lstStrings;
static final String[] sinistroTesteUm = new String[] { "12345678",
"01/09/2012", "Acidente Carro", "499", "1391", "823752", "C",
"Rua Aberte Douglas", "33", "Complemento", "Vila Vera",
"04272-000", "São Paulo", "SP" };
static final String[] cabecalho = new String[] { "No. Sinistro",
"Data Ocorrencia", "Tipo de Sinistro", "Sucursal", "Ramo",
"Apolice", "Tipo", "Endereco", "Nro", "Complemento", "Bairro",
"CEP", "Cidade", "Estado" };
/**
* Construtor.
*
* @param context
* @param lstStrings
*/
public ConsultaSinistroAdapter(final Context context, List<String[]> lstStrings) {
super();
this.context = context;
this.lstStrings = lstStrings;
}
@Override
public int getCount() {
return lstStrings.size();
}
@Override
public Object getItem(int position) {
return lstStrings.get(position);
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup arg2) {
lstStrings = new ArrayList<String[]>();
lstStrings.add(sinistroTesteUm);
ListView listView;
if (view == null) {
listView = new ListView(context);
listView.setLayoutParams(new GridView.LayoutParams(85, 85));
} else {
listView = (ListView) view;
}
listView.setAdapter(new ConsultaSinistroAdapter(context, lstStrings));
return listView;
}
}
xml:
Is only a simple GridView.
Exception:
08-20 22:34:12.187: E/AndroidRuntime(1641): FATAL EXCEPTION: main
08-20 22:34:12.187: E/AndroidRuntime(1641): java.lang.StackOverflowError
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.content.res.Resources.getValue(Resources.java:1010)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.content.res.Resources.getDrawable(Resources.java:659)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.EdgeEffect.<init>(EdgeEffect.java:137)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.AbsListView.setOverScrollMode(AbsListView.java:832)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.view.View.<init>(View.java:3237)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.view.View.<init>(View.java:3281)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.view.ViewGroup.<init>(ViewGroup.java:431)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.AdapterView.<init>(AdapterView.java:235)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.AbsListView.<init>(AbsListView.java:766)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.<init>(ListView.java:143)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.<init>(ListView.java:139)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.<init>(ListView.java:135)
08-20 22:34:12.187: E/AndroidRuntime(1641): at com.porto.questionario.adapter.ConsultaSinistroAdapter.getView(ConsultaSinistroAdapter.java:61)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.AbsListView.obtainView(AbsListView.java:2159)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.makeAndAddView(ListView.java:1831)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.fillDown(ListView.java:674)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.fillFromTop(ListView.java:735)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.ListView.layoutChildren(ListView.java:1652)
08-20 22:34:12.187: E/AndroidRuntime(1641): at android.widget.AbsListView.onLayout(AbsListView.java:1994)
You can not set a list adapter in getView()
. getView()
creates the view for one row in the ListView
. If you want to exchange the ListAdapter
, then you need to find another way.