java - 填充 GridView 问题

标签 java android gridview multidimensional-array

所以我一直在我的应用程序中使用 GridView 来处理一些事情,这个问题现在困扰着我,因为我在尝试大约一周后无法解决这个问题。

我正在尝试使用当前存储在多维数组中的时间表填充 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:摆脱了 phtrivier 提到的 do/while 循环

Edit3:我想没有人知道..

最佳答案

这部分看起来很可疑:

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

如果意味着你的“getView”函数将始终返回第一个 TextView,仅此而已......

关于java - 填充 GridView 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417401/

相关文章:

java - 如何解决Apache Cassandra的OutOfMemory问题

c# - 在 gridview edititemtemplate 中绑定(bind)下拉列表

javascript - 在 gridview 中(标签在点击时变成文本框)一次一个

java - 在图中的两个节点之间寻找路径(存储通过的节点)

java - 图像上的 if 语句

android - 如何获取通知扩展 View 的自定义日期格式

java - 使用 BatteryManager 接收广播 Intent 时出错

android - 在 2 台设备上运行 android 仪器测试

c# - asp.net gridview 中的动态链接

java - Eclipse 查找方法的引用