android 如何从GridView或GridLayout的每个EditText中获取每个值?

63lcw9qa  于 2023-08-01  发布在  Android
关注(0)|答案(2)|浏览(121)

我还是Android Studio的新手,在我熟悉编写其余部分之前,我还有一个任务要完成,那就是我的第一个线性代数相关项目。此任务是获取EditText矩阵中EditText的每个值,并将它们存储到int[][]矩阵中。
现在,我真的在这个问题上停留了几个小时,主要原因是我不知道如何使用GridView和GridLayout。我也不知道用哪一个更好。
下面是我正在尝试做的一个表示:
假设用户希望使用2x3矩阵进行计算


的数据
然后,应用程序将显示空EditText的2x3矩阵:



用户在空的EditTexts

中输入了他们想要的任何数字
当他们点击“Next Matrix”(下一个矩阵)按钮时,我想从每个EditText中获取数字,并将它们放入int[][]矩阵中,以便将其传输到另一个Activity。
如果我能做到这一点,我就能把每个EditText的值作为一个TextView打印出来。
同样,为了放置EditText矩阵,使用哪个Grid更好?是网格视图还是网格布局?如何从它们中获取每个EditText的值?

biswetbf

biswetbf1#

我想你在显示矩阵网格上的问题已经解决了。您可能需要获取矩阵内容现在。试试这个

// SETUP YOUR GRIDVIEW
GridView mGridView = (GridView)findViewById(R.id.grid);
// COUNT TOTAL CHILDS IN IT
int gridchilds = mGridView.getChildCount();
// ITERATE THROUGH EACH CHILDS
for(int i = 0; i < gridchilds; i++) 
{
    // SELECT 'i' th CHILD IN A VIEWGROUP
    ViewGroup gridChild = (ViewGroup) mGridView.getChildAt(i);
    // GET THE CHILDREN SIZE OF THAT 'i' th CHILD
    int childSize = gridChild.getChildCount();
    // ITERATE THOUGH EACH
    for(int k = 0; k < childSize; k++) 
    {
        // CHECK IF IT IS AN 'EditText'
        if( gridChild.getChildAt(k) instanceof EditText)
        {
            // GET THE MATRIX VALUE AT THAT CELL
            String matrix_value=gridChild.getChildAt(k)).getText().toString();
        }
    }
}

字符串
希望有帮助

zsohkypk

zsohkypk2#

您可以通过使用RecyclerViewGridLayoutManager来实现它。
尝试下面的方法-但是我不确定最后一个方法的逻辑(在getValues()中)是否正确。你可能需要调整一下。
(看来你比我更熟悉数学,我就把它留给你了。))
希望能成功

RecyclerView rv = (RecyclerView) findViewById(your_recycler_view_id);
rv.setLayoutManager(new GridLayoutManager(context, COLUMN_COUNT, GridLayoutManager.VERTICAL, false));
rv.setAdapter(new YourCustomAdapter());

class YourCustomAdapter() {
    EditText[][] editTexts = new EditText[COLUMN_COUNT][ROW_COUNT];

    public YourCustomAdapter() {
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(your_edit_text_layout, parent, false);
        return new YourViewHolder(view, listener);
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder h, int position) {
        YourViewHolder holder = (YourViewHolder) h;
        editTexts[position / COLUMN_COUNT][position % COLUMN_COUNT] = holder.editText;
    }

    @Override
    public int getItemCount() {
        return COLUMN_COUNT * ROW_COUNT;
    }

    private class YourViewHolder extends RecyclerView.ViewHolder {
        EditText editText;
        private YourViewHolder() {
            super(itemView);
            this.editText = itemView.findViewById(your_edit_text_id);
        }
    }

    public int[][] getValues() {
        int [][] values = new int[ROW_COUNT][COLUMN_COUNT];

        for(int i = 0; i < ROW_COUNT; i ++) {
            for(int j = 0; j < COLUMN_COUNT; j ++) {
                values[i][j] = 
                Integer.parseInt(editTexts[i][j].getText().toString());
            }
        }
    }
}

字符串

相关问题