我想创建一个不可见的GridView作为我屏幕上的坐标

时间:2018-02-01 11:09:26

标签: java android xml gridview coordinates

所以我正在开发一个使用Android Studio的应用程序,我想基本上有3个布局。第一个是静态背景线性布局,只有一张背景图片。在上面,是另一个线性布局,它将具有“无”,并且在上面是一个不可见的网格布局,每个“盒子”有两个数字,行和列,并且使用它,我将知道放入的位置我的第二个线性布局(例如,如果我想向右上方移动一些东西,我将只放入位置0,0并将它放在该位置,但是在线性布局上,而不是网格布局。)

我已经制作了gridlayout,线性布局,这里是xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/map_backround"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/grassGreen"
    android:gravity="center"
    android:visibility="visible">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="invisible"
        app:srcCompat="@drawable/greenBackround" />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mapPosition">
    <GridLayout
        android:id="@+id/map_hardcore"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="4dp"
        android:gravity="center"
        android:horizontalSpacing="0dp"
        android:numColumns="270"
        android:stretchMode="columnWidth"
        android:verticalSpacing="0dp"
        android:visibility="invisible">
    </GridLayout>
</LinearLayout>
</LinearLayout>

和baseAdapter。请记住,类Map基本上是一个继承Coordination的类,并且有一个2d坐标数组(创建一个2d坐标图),而坐标只是一个有2个整数的类,一个用于行,一个用于列,给我每个广场的ID。

public class gridViewHandler extends BaseAdapter
{
    Context context;
    private Map selectedMap;
    private Coordination[][] position;
    private int countLocations;
    public gridViewHandler(Context context, Map selectedMap)
    {
        this.countLocations = 0;
        this.context = context;
        this.selectedMap = selectedMap;
        this.position = selectedMap.getMapParams();
        for(int i = 0; i < selectedMap.getColumns(); i++)
        {
            for(int a = 0; a < selectedMap.getRows(); a++)
            {
                countLocations++;
            }
        }
    }
    @Override
    public int getCount()
    {
        return countLocations;
    }
    public int getColumnCount()
    {
        return position.length;
    }
    public int getRowCount()
    {
        return position[0].length;
    }
    public Object getItem(int colNum, int rowNum)
    {
        return position[colNum][rowNum];
    }
    @Override
    public  Object getItem(int i)
    {
        return null;
    }
    @Override
    public long getItemId(int i)
    {
        return 0;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        return null;
    }
}

最后,这就是我的“Main_Activity”的样子(我称之为游戏)

public class Game extends Activity {

    private GridView defaultMap;
    private Map map = new Map();

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

        defaultMap = (GridView) this.findViewById(R.id.map_hardcore);
        gridViewHandler gridAdapter = new gridViewHandler(Game.this, map);
        defaultMap.setAdapter(gridAdapter);
    }
}

所以,我真的不知道如何使用我已经制作的东西。我认为gridview已准备就绪,我需要做的就是创建两个线性布局,然后创建我插入gridview框(行,列)和项目的ID的函数,它将显示在该位置的线性布局。任何想法我如何实现这个?

我实现的目标是一个我将始终能够知道的地图,并控制每个物体的位置。

0 个答案:

没有答案