Android 未能遍历 Gridview 中的所有数字

Android failed to loop through all the Numbers in Gridview

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

每个table都有一个ID,从1开始。但是,我所有的table号码都是一样的。看起来循环有问题?

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,那么table就会有9个table没有。从 1- 9。

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

替换这个

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

来自

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

祝你好运!

这个for循环是错误的

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

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

@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;
}

好吧,你把 Count 放在 for 循环里,所以它显示你最后 position.please 把它放在 for 循环外面。

您正在循环使用 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;
}