在Android Studio中,如何使用GridView显示文本框矩阵?

在Android Studio中,如何使用GridView显示文本框矩阵?,android,xml,android-studio,matrix,gridview,Android,Xml,Android Studio,Matrix,Gridview,我正在进行一个项目,该项目涉及告诉用户使用下拉微调器输入他们想要的矩阵大小,然后按submit,然后将有一个新的活动显示用户选择的维度(大小)的文本框矩阵 考虑到这是我的第一个Android Studio项目,而且我还是一个新手,我发现这项任务相当棘手。 下图告诉用户他们希望矩阵具有什么维度 以下是用户选择维度后将显示的活动的XML代码: <RelativeLayout android:layout_width="368dp"

我正在进行一个项目,该项目涉及告诉用户使用下拉微调器输入他们想要的矩阵大小,然后按submit,然后将有一个新的活动显示用户选择的维度(大小)的文本框矩阵

考虑到这是我的第一个Android Studio项目,而且我还是一个新手,我发现这项任务相当棘手。

下图告诉用户他们希望矩阵具有什么维度

以下是用户选择维度后将显示的活动的XML代码:

       <RelativeLayout
            android:layout_width="368dp"
            android:layout_height="495dp"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="8dp">

            <TextView
                android:id="@+id/textView10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="15dp"
                android:layout_marginStart="15dp"
                android:text="Please input the numbers on both matrices." />

            <TextView
                android:id="@+id/textView11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView10"
                android:layout_alignStart="@+id/textView10"
                android:layout_below="@+id/textView10"
                android:layout_marginTop="21dp"
                android:text="Matrix1: "
                android:textStyle="bold" />

           <GridView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/textView11" />

       </RelativeLayout>

对于TwoMatricesDimensionSubmitActivity,我希望它显示一个GridView,该GridView显示一个文本框矩阵,具有用户选择的维度大小,但我不知道如何将行和列的值放入下一个活动的XML中,也不知道如何使用GridView

您可以通过5个步骤来完成

创建一个矩阵对象

public class Matrix 
{
    public int i;
    public int j;
    public Matrix(int i, int j) 
    {
        this.i = i;
        this.j = j;
    }
}
创建一个名为“griditem.xml”的新布局。这是网格上每个项目的单一表示形式

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:textSize="20dp"
        android:textStyle="bold"
        android:gravity="center"
        android:textColor="#000"
        android:text="0"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

为网格视图创建适配器

public class MatricAdapter extends BaseAdapter {
    Context context;
    List<Matrix> matrixList;

    public MatricAdapter(Context context, List<Matrix> matrixList) {
        this.context = context;
        this.matrixList = matrixList;
    }

    @Override
    public int getCount() {
        return matrixList.size();
    }

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View v=View.inflate(context,R.layout.griditem,null);
        return v;
    }
}
公共类MatricAdapter扩展BaseAdapter{
语境;
列表矩阵列表;
公共矩阵标识符(上下文,列表矩阵列表){
this.context=上下文;
this.matrixList=matrixList;
}
@凌驾
public int getCount(){
返回matrixList.size();
}
@凌驾
公共对象getItem(int i){
returnmatrixlist.get(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
视图v=视图.inflate(上下文,R.layout.griditem,null);
返回v;
}
}
现在开始您的新活动(我假设,您在MatrixGrid显示活动中获得了行和列)

@覆盖
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到矩阵维数
int行=4;
int列=3;
//初始化网格
GridView网格=(GridView)findViewById(R.id.grid);
grid.setNumColumns(列);
//创建矩阵对象的列表
List matrixList=新建ArrayList();
//为每个项目添加一些内容

对于(int i=0;我确实帮了忙,谢谢!我唯一的问题是知道如何将用户从上一个活动中选择的行和列转移到新活动中。您可以使用Intent来完成此操作。在发送活动端
Intent myIntent=new Intent(main Activity.this,NextActivity.class);myIntent.putExtra(“行”,intValue);myIntent.putExtra(“列”,intValue);startActivity(myIntent);
。在接收器活动上,通过onCreate()方法捕获传递的值,如
Intent Minent=getIntent();int row=Minent.getIntExtra(“行”,0);int column=Minent.getIntExtra(“列”,0)
希望听到这一点会有帮助。这对回答勾号有用吗?不,这是线性代数计算器,我正试图让用户通过设置N行和m列创建自己的矩阵,然后将每个EditText中的数字放入一个由EditText组成的NxM矩阵中。你的问题解决了吗?你能通过单击将其设置为答案吗那个绿色的蜱虫?
public class MatricAdapter extends BaseAdapter {
    Context context;
    List<Matrix> matrixList;

    public MatricAdapter(Context context, List<Matrix> matrixList) {
        this.context = context;
        this.matrixList = matrixList;
    }

    @Override
    public int getCount() {
        return matrixList.size();
    }

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View v=View.inflate(context,R.layout.griditem,null);
        return v;
    }
}
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // GET THE MATRIX DIMENSIONS
        int rows=4;
        int columns=3;

        // INITIALISE YOUR GRID
        GridView grid=(GridView)findViewById(R.id.grid);
        grid.setNumColumns(columns);

        // CREATE A LIST OF MATRIX OBJECT
        List<Matrix> matrixList=new ArrayList<>();

        // ADD SOME CONTENTS TO EACH ITEM
        for (int i=0;i<rows;i++)
        {
            for (int j=0;j<columns;j++)
            {
                matrixList.add(new Matrix(i,j));
            }
        }

        // CREATE AN ADAPTER  (MATRIX ADAPTER)
        MatricAdapter adapter=new MatricAdapter(getApplicationContext(),matrixList);

        // ATTACH THE ADAPTER TO GRID
        grid.setAdapter(adapter);
    }