Java 如何从GridView的适配器中获取每个EditText的值?
我正在开发一个矩阵计算器应用程序,我很难弄清楚如何获取GridView中每个EditText的值。我需要得到这些值,以便将它们放入另一个矩阵中并进行计算 如果用户想要使用3x2矩阵,下面是GridView的外观。它是一个包含六个EditText的GridView,因为3*2=6 下面是上面图片的XML:Java 如何从GridView的适配器中获取每个EditText的值?,java,android,gridview,Java,Android,Gridview,我正在开发一个矩阵计算器应用程序,我很难弄清楚如何获取GridView中每个EditText的值。我需要得到这些值,以便将它们放入另一个矩阵中并进行计算 如果用户想要使用3x2矩阵,下面是GridView的外观。它是一个包含六个EditText的GridView,因为3*2=6 下面是上面图片的XML: <RelativeLayout android:layout_width="368dp" android:layout_height="495dp" tools:
<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:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_alignLeft="@+id/textView11"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignStart="@+id/textView11"
android:layout_below="@+id/textView11" />
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Please fill in all of the fields"
android:textColor="#FF0000"
android:visibility="invisible"
android:layout_below="@+id/grid"
android:layout_alignLeft="@+id/grid"
android:layout_alignStart="@+id/grid"
android:layout_marginTop="15dp" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView8"
android:layout_alignStart="@+id/textView8"
android:layout_below="@+id/textView8"
android:layout_marginTop="11dp"
android:onClick="setEmptyToZero"
android:text="Set Empy Fields to Zero" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/button4"
android:layout_marginLeft="28dp"
android:layout_marginStart="28dp"
android:layout_toEndOf="@+id/button4"
android:layout_toRightOf="@+id/button4"
android:onClick="nextMatrix"
android:text="Next Matrix" />
</RelativeLayout>
最后,这里是Java代码,我将从GridView中的每个EditText中获取值,但我不知道如何做到这一点:
private MatrixAdapter adapter;
private List<Matrix> matrixList;
private int rows;
private int columns;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subtract_matrix_input);
// GET THE MATRIX DIMENSIONS FOR BOTH MATRICES
Bundle extras = getIntent().getExtras();
rows = extras.getInt("rows");
columns = extras.getInt("columns");
//MATRIX 1 INPUT
// INITIALISE THE GRID
GridView grid=(GridView)findViewById(R.id.grid);
grid.setNumColumns(columns);
// CREATE A LIST OF MATRIX OBJECTS
//Or create an EditText[rows][columns] CHANGE INTO THAT LATER
//Matrix[][] matrix1 = new Matrix[rows][columns];
matrixList = new ArrayList<>(); //THIS IS ONLY FOR THE MATRIX OF EDIT_TEXTS
//Getting the matrix values will come from the user input
// 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)
adapter = new MatrixAdapter(getApplicationContext(),matrixList);
// ATTACH THE ADAPTER TO GRID
grid.setAdapter(adapter);
}
public void nextMatrix(View view) //The button goes to the next matrix
{
//It collects what the user inputted too
//Checks if one of the fields are empty
//But how to get the values from each EditText?
}
public void setEmptyToZero(View view) //Fills the empty text boxes to zero
{
//how to make the program add zeros to the text fields?
//iterate through the textField matrix first. If an empty field is
//found, add zero to it
EditText textField;
boolean fieldIsEmpty;
for (int i=0;i<rows;i++)
{
for (int j=0;j<columns;j++)
{
//How to get values from the EditText Matrix?
}
}
}
专用矩阵适配器;
私有列表矩阵列表;
私有int行;
私有int列;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u subtract\u matrix\u input);
//获取两个矩阵的矩阵维数
Bundle extras=getIntent().getExtras();
行=额外的getInt(“行”);
columns=extras.getInt(“columns”);
//矩阵1输入
//初始化网格
GridView网格=(GridView)findViewById(R.id.grid);
grid.setNumColumns(列);
//创建矩阵对象的列表
//或者稍后创建一个EditText[行][列]更改为该行
//矩阵[][]矩阵X1=新矩阵[行][列];
matrixList=new ArrayList();//这仅适用于编辑文本的矩阵
//获取矩阵值将来自用户输入
//为每个项目添加一些内容
对于(int i=0;i我希望此代码将帮助您
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.R.layout.grid_item, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Item currentItem = (Item) getItem(position);
viewHolder.itemName.setText(currentItem.getItemName()); // if already in your list:
return convertView;
}
私有类视窗持有者{
编辑文本项名称
public ViewHolder(View view) {
itemName = (EditText)view.findViewById(R.id.editText3);
itemname.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = itemName..getText().toString();
}
});
}
}您可以创建一个Arraylist来存储值,并将其带到您想要的任何地方。要获取编辑文本的值并将每个项目存储在Arraylist中,请在编辑文本中使用“TextChangeListener()”
检查此链接:
如果我使用此方法,是否意味着我可以通过使用getView方法从EditText中获取值?在这段代码中,您将在viewHolder的onClick方法中获取EditText的值。
private MatrixAdapter adapter;
private List<Matrix> matrixList;
private int rows;
private int columns;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subtract_matrix_input);
// GET THE MATRIX DIMENSIONS FOR BOTH MATRICES
Bundle extras = getIntent().getExtras();
rows = extras.getInt("rows");
columns = extras.getInt("columns");
//MATRIX 1 INPUT
// INITIALISE THE GRID
GridView grid=(GridView)findViewById(R.id.grid);
grid.setNumColumns(columns);
// CREATE A LIST OF MATRIX OBJECTS
//Or create an EditText[rows][columns] CHANGE INTO THAT LATER
//Matrix[][] matrix1 = new Matrix[rows][columns];
matrixList = new ArrayList<>(); //THIS IS ONLY FOR THE MATRIX OF EDIT_TEXTS
//Getting the matrix values will come from the user input
// 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)
adapter = new MatrixAdapter(getApplicationContext(),matrixList);
// ATTACH THE ADAPTER TO GRID
grid.setAdapter(adapter);
}
public void nextMatrix(View view) //The button goes to the next matrix
{
//It collects what the user inputted too
//Checks if one of the fields are empty
//But how to get the values from each EditText?
}
public void setEmptyToZero(View view) //Fills the empty text boxes to zero
{
//how to make the program add zeros to the text fields?
//iterate through the textField matrix first. If an empty field is
//found, add zero to it
EditText textField;
boolean fieldIsEmpty;
for (int i=0;i<rows;i++)
{
for (int j=0;j<columns;j++)
{
//How to get values from the EditText Matrix?
}
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.R.layout.grid_item, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Item currentItem = (Item) getItem(position);
viewHolder.itemName.setText(currentItem.getItemName()); // if already in your list:
return convertView;
public ViewHolder(View view) {
itemName = (EditText)view.findViewById(R.id.editText3);
itemname.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = itemName..getText().toString();
}
});
}