带有动态数字列和行的Android tableview

时间:2012-12-05 15:09:17

标签: java android xml tableview

这实际上是一个记忆训练应用程序,正方形矩阵翻转到另一侧而不是回到第一侧。用户需要点击翻转的方块。你知道我的意思? enter image description here

类似的东西。

我需要的是矩阵的大小会动态变化。如果用户已经通过了一个复杂程度(例如矩阵大小为4x4),那么矩阵大小将增长(例如5x5),如果没有,则矩阵大小将变小(例如3x3)。我希望这很清楚,如果没有 - 抱歉,英语不是我的母语=)

所以如果我从代码中做到这一点就不会有问题了。我会使用ViewFlipper和一些过渡动画,并使用inflater或类似的东西创建具有我想要的大小的TableView(或直接从代码中完全不使用xml)。然后从代码中将它添加到ViewFlipper。

但不知怎的,我不喜欢这个想法。

接下来的想法进入我的脑海。要在ViewFlipper中包含所有可能的表视图,然后只显示showNext();或showPrevious();取决于用户做了什么。但在这种情况下,XML的大小非常大。

所以也许有人知道另一种方法吗?

1 个答案:

答案 0 :(得分:1)

我建议您查看view-pager-example

使用viewflipper showNext();或showPrevious();你必须同时下载所有数据,但是使用fragmen,你只能加载与片段相关的特定数据。

您可以更改每个片段的视图,如下所示

 @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0:
                return new DetailFragment();
            case 1:
                return new ImageFragment(R.drawable.ic_launcher);
            case 2:
                return new ImageFragment(R.drawable.thumb);

            default:
                return null;
            }
        }

[编辑 - 用于检查监听器中的视图]

public class LoginExampleImplements extends Activity实现OnClickListener {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
    btn3.setOnClickListener(this);
    btn4.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    if(v==btn1) {

    } else if(v==btn2) {

    } else if(v==btn3) {

    }  else if(v==btn4) {

    }
}

}

[编辑2]

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        LinearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);

        for (int i = 0; i < 30; i++) {
            button = new Button(getApplicationContext());
            button.setId(i);
            button.setOnClickListener(this);
            LinearLayout1.addView(button);
        }

    }

    @Override
    public void onClick(View v) {
        Button b = (Button)v;
        b.getId()
        // check clikedId   
    }

[编辑3]

public class MainActivity extends Activity implements OnClickListener{  
    ImageView img;
    LinearLayout LinearLayout1;
    LinearLayout.LayoutParams layoutParams; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout1 = (LinearLayout) findViewById(R.id.ln1);
         layoutParams = new LinearLayout.LayoutParams(100, 100);
        for (int i = 0; i < 30; i++) {
            img = new ImageView(getApplicationContext());
            img.setId(i);
            img.setTag(i);           
            layoutParams.setMargins(10, 10, 10, 10);
            img.setLayoutParams(layoutParams);          
            img.setBackgroundColor(Color.RED);
            img.setPadding(10, 10, 10, 10);
            img.setOnClickListener(this);

            LinearLayout1.addView(img);            
        }
    }


    @Override
    public void onClick(View v) {
        ImageView b = (ImageView)v;     
        b.setBackgroundColor(Color.BLUE);
        b.setImageLevel(Integer.valueOf(String.valueOf(b.getTag())));
    }

}