2012-02-23 8 views
1

私はアプリケーションでいくつかのグリッドビューを使用していましたが、この問題は現在約1週間後に問題を解決できないため、私に迷惑をかけています。GridViewの問題への投入

現在、多次元配列に格納されているタイムテーブルをグリッドビューに取り込みしようとしていますが、最初に取り込まれるのはインデックスだけです。 BaseAdapterクラスのコピーは、次のとおりです。

package com.ian.calendar.event; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 
import com.ian.calendar.database.DatabaseHandler; 
import com.ian.campusmap.R; 

public class ModuleEvents extends BaseAdapter { 

    private String weekday; 
    private Context context; 
    private View view; 
    private TextView[] textView; 
    private DatabaseHandler dbHandler; 
    private int eventNumber; 
    private String[][] moduleA; 

    public ModuleEvents(Context _context, String _weekday) { 
     context = _context; 
     weekday = _weekday; 
     dbHandler = new DatabaseHandler(context); 
     dbHandler.populateDatabase(); 
     dbHandler.getTimeTable(); 
    } 

    public int getCount() { 
     return 6; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     int i = 1; 
     eventNumber = getEventsOnWeekday(); 
     moduleA = new String[eventNumber][6]; 
     textView = new TextView[eventNumber]; 

     do { 
      if(weekday.equals(dbHandler.getTimeTableWeekday(i))) { 
       for(int j = 0; j < eventNumber; j++) { 
        moduleA[j][0] = dbHandler.listArray(i, 0); 
        moduleA[j][1] = dbHandler.listArray(i, 1); 
        moduleA[j][2] = dbHandler.listArray(i, 3); 
        moduleA[j][3] = dbHandler.listArray(i, 5); 
        moduleA[j][4] = dbHandler.listArray(i, 6); 
        moduleA[j][5] = dbHandler.listArray(i, 2); 
        i++; 
       } 
      } else { 
       i++; 
      } 
     } while(i < dbHandler.count); 

     if(convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) 
       context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      view = inflater.inflate(R.layout.grid_item_2, null); 
     } 

     for(int k = 0; k < moduleA.length; k++) { 
      textView[k] = new TextView(context); 
      textView[k] = (TextView) view.findViewById(R.id.txtModuleID); 
      textView[k].setText(moduleA[k][position]); 
     } 

     return view; 
    } 

    public Object getItem(int arg0) { 
     return null; 
    } 

    public long getItemId(int arg0) { 
     return 0; 
    } 

    public int getEventsOnWeekday() { 
     int events = 0; 
     for(int i = 1; i <= 9; i++) { 
      if(weekday.equals(dbHandler.getTimeTableWeekday(i))) { 
       events++; 
      } 
     } 
     return events; 
    } 
} 

さらなるクラスのソースコードが必要な場合は、お気軽にお問い合わせください。

編集:まだ削除していない冗長コードがいくつか追加されている可能性があることを忘れてしまった。ごめんなさい!

EDIT2:私は、この部分は疑わしい

答えて

0

...誰も知らないとします:

 do { 
      return textView[k]; 
     } while(l < moduleA.length); 

あなたを意味している場合phtrivier

EDIT3で述べたようにwhileループ/ DOを処分しました"getView"関数は常に最初のTextViewを返します。それはすべてです...

+0

phtrivier:申し訳ありません、私の冗長なコードの一部です。私たちがそれを取り除き、単に「復帰の見解」をするならば。配列の最後のインデックスのみを返します。 – ieen