创建自定义网格板(如棋盘游戏中所示)

时间:2015-05-29 22:34:25

标签: android

我对Android GUI设计很陌生。我试图创建一个如下所示的板。单元格可以具有不同的颜色,并且应该可以通过显示的吐司进行点击,这些属性。我目前的代码存在重大问题。如何生成这种类型的视图?我建议让我们从头开始,因为这可能非常简单,而且我的代码很乱。提前谢谢。

enter image description here

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;

public class GridViewActivity extends Activity {

private GridView list;
ArrayList<String> data = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gridview);
    for (int i = 0; i < 10; i++) {
        for(int j=0;j<20;j++)
        data.add(i+"-"+j);
    }
    GridViewCustomAdapter adapter = new GridViewCustomAdapter(this, data);

    list = (GridView) findViewById(R.id.grid_view);
    list.setAdapter(adapter);

}
}

import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;

public class GridViewCustomAdapter extends BaseAdapter {

    ArrayList<String> items;

    static Activity mActivity;

    private static LayoutInflater inflater = null;

    public GridViewCustomAdapter(Activity activity, ArrayList<String> tempTitle) {
        mActivity = activity;
        items = tempTitle;

        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public final int getCount() {

        return items.size();

    }

    @Override
    public final Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public final long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        View v = null;

        v = inflater.inflate(R.layout.item, null);

        Button tv = (Button) v.findViewById(R.id.button);
        tv.setText(items.get(position));

        return v;
    }

}

1 个答案:

答案 0 :(得分:1)

这是一个使用按钮的简单示例。您可以添加调整大小,ScrollView等等。

a JS interpolation ' " test

然后您的布局文件只是

public class MainActivity extends Activity {

    TableLayout table;
    private static final int TABLE_WIDTH = 12;
    private static final int TABLE_HEIGHT = 8;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        table = (TableLayout) findViewById(R.id.view_root);

        // Populate the table with stuff
        for (int y = 0; y < TABLE_HEIGHT; y++) {
            final int row = y;
            TableRow r = new TableRow(this);
            table.addView(r);
            for (int x = 0; x < TABLE_WIDTH; x++) {
                final int col = x;
                Button b = new Button(this);
                b.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), 
                            "You clicked (" + row + "," + col + ")",
                            Toast.LENGTH_SHORT).show();
                    }
                });
                r.addView(b);
            }
        }
    }
}
相关问题