私は何をコーディングしていますか?
10 個の文字列を持つグリッドで、Activity の単なる表示グリッドです。
何が問題ですか?
アダプターを 2 回呼び出していることはわかっていますが、アダプターを 1 回呼び出してデータをロードする方法がわかりません。
Android のドキュメントを読んだところ、GridView を使用して配列の ListView を受け取り、必要なビューを作成できることがわかりました。しかし、ImageView (画像をロードするための getView に set メソッドがあります) の例を見ましたが、ListView をロードできません。配列を設定する場所がわかりません。それがアダプタの getView() メソッドにある場合、またはメイン アクティビティにある場合です。(おそらく getView())。
ここに私のコードと例外があります:
クラス;
アクティビティ;
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;
}
}
アダプタ:
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:
シンプルな GridView のみです。
例外:
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)