Android未能遍历Gridview中的所有Numbers

时间:2016-10-10 06:09:37

标签: android android-gridview

我尝试使用Gridview显示餐厅中的表总数。用户可以按整数设置表的总数。

每个表都有一个从1开始的ID。但是,我的所有表号都是相同的。看起来循环出了问题?

class my_adapter extends BaseAdapter{

LayoutInflater inflater=null;
Context ctx;
int table_count;

my_adapter(Context ctx, int table_count){
    this.ctx=ctx;
    this.table_count=table_count;
}

@Override
public int getCount() {
    return table_count; // total no. of tables
}

@Override
public Object getItem(int i) {
    return i;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

    View row=view;

    if(row==null){
        inflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row=inflater.inflate(R.layout.single,null);
    }

    TextView tv_table_no=(TextView)row.findViewById(R.id.table_no);

    for(int count=1;count<=table_count;count++){
        tv_table_no.setText("table number: "+count);
    }

    return row;
}
}

如果table_count是9,那么将有9个表没有表。从1-9开始。

有人知道这里有什么问题吗?

enter image description here

4 个答案:

答案 0 :(得分:1)

替换此

for(int count=1;count<=table_count;count++){
    tv_table_no.setText("table number: "+count);
}

通过

    tv_table_no.setText("table number: "+i);

希望最好!

答案 1 :(得分:1)

此for循环错误

for(int count=1;count<=table_count;count++){
            tv_table_no.setText("table number: "+count);
        }

这里不需要循环。修改你的代码写这样

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

    View row=view;

    if(row==null){
        inflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row=inflater.inflate(R.layout.single,null);
    }

    TextView tv_table_no=(TextView)row.findViewById(R.id.table_no);


        tv_table_no.setText("table number: "+(i+1)); //i is the position


    return row;
}

答案 2 :(得分:1)

您正在循环使用getView()方法。 实际上getView()方法根据getCount()方法调用。

删除for循环并设置i的值,而不是TextView上的计数。

只需将方法getView()替换为:

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

    inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    

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

    TextView tv_table_no=(TextView)row.findViewById(R.id.table_no);

    tv_table_no.setText("table number: "+i);

    return row;
}

答案 3 :(得分:0)

你把Count放在for循环中,所以它显示你的最后位置。请把它放在for循环之外。