Не удается загрузить мой ListView массивов в мой GridView

Что я кодирую?

Сетка с 10 строками, просто отображаемая сетка в действии.

В чем проблема?

Я знаю, что вызываю адаптер дважды, но не знаю, как вызвать его один раз для загрузки данных.

Я прочитал документацию по 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)

person Leonardo Leonardo    schedule 20.08.2013    source источник
comment
mkyong.com/android/android-gridview-example, пожалуйста, проверьте этот пример   -  person Ankitkumar Makwana    schedule 21.08.2013


Ответы (1)


Вы не можете установить адаптер списка в getView(). getView() создает представление для одной строки в ListView. Если вы хотите обменять ListAdapter, то вам нужно найти другой способ.

person SimonSays    schedule 20.08.2013
comment
Я научился создавать заголовок и другие строки в ListView и не использовал GridView... спасибо за ваш пост! - person Leonardo Leonardo; 21.08.2013
comment
просто чтобы закончить, я тоже использовал SimpleAdapter ... до свидания! - person Leonardo Leonardo; 21.08.2013