2017-05-26 22 views
2

私はMatrix Calculatorアプリケーションで作業していますが、GridViewにある各EditTextの値を取得する方法がわかりません。私はそれらを別の行列に入れて計算するために値を取得する必要があります。GridViewからアダプタから各EditTextの値を取得する方法は?

ここでは、3x2マトリックスを使用する場合のGridViewの外観を示します。ここ

<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> 

GridViewの項目のXMLである:ここでは上記のそのピクチャのXMLである* 2 3 = 6

enter image description here

ので、6つのEditTextsを含むGridViewの。私は彼らから値を取得する方法がわからない:

<EditText 
    android:id="@+id/editText3" 
    android:layout_width="50dp" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:ems="10" 
    android:inputType="numberDecimal" /> 

ここMatrixAdapterは、GridViewのためのものです:

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

    //Or create an int[rows][columns] CHANGE INTO THAT LATER 
    public MatrixAdapter(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.grid_item,null); 
     return v; 
    } 
} 

そして、Matrixクラス:

public class Matrix { 
    public int i; 
    public int j; 
    public Matrix(int i, int j) 
    { 
     this.i = i; 
     this.j = j; 
    } 
} 

そして最後に、ここで私はGridViewの各EditTextから値を取得しようとしているJavaコードですが、それを行う方法がわかりません:

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? 
     } 
    } 
} 

答えて

1

私は

@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; 

}

プライベートクラスViewHolder { のEditText itemNameに、このコードはあなたを助けることを願っています。

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(); 

    } 
    }); 
} 

}

+0

が、それは私がGetViewメソッドを使用してのEditTextから値を得ることができることを意味するのでしょうか? –

+0

このコードでは、viewHolderのonClickメソッドでedittextの値を取得しています。 –

0

あなたは値を格納し、あなたが好きな場所取るのArrayListを作成することができます。編集テキストの値を取得し、各項目のarraylistに格納するには、編集テキストで「TextChangeListener()」を使用します。

チェックこのリンク:私はこれを使用する場合

How to use the TextWatcher class in Android?

関連する問題