TableLayout 与 TextView 和 EditText 使用 android Studio

Posted

技术标签:

【中文标题】TableLayout 与 TextView 和 EditText 使用 android Studio【英文标题】:TableLayout with TextView and EditText using android Studio 【发布时间】:2016-06-12 02:43:01 【问题描述】:
JSONArray json=new JSONArray(data);
for(int i=0;i<json.length(); i++)

    k=json.length();
    rowId =  i;
    JSONObject obj=json.getJSONObject(i);

    pname=obj.getString("ProductName");//database values
    quantity= obj.getString("Quantity");
    id = Integer.toString(k);
    TableRow tr = new TableRow(this);
    tr.setId(i);
    tr.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));


    TextView labelID = new TextView(this);//header is SI:NO
    labelID.setText(id);
    labelID.setPadding(2, 5, 5, 0);
    labelID.setLeft(50);
    labelID.setTextColor(Color.BLACK);
    tr.addView(labelID);

    TextView labelNAME = new TextView(this);//header is PRODUCT NAME
    labelNAME.setText(pname);
    labelNAME.setRight(10);
    labelNAME.setPadding(2, 8, 5, 0);
    labelNAME.setTextColor(Color.BLACK);
    tr.addView(labelNAME);

    labelWEIGHT = new TextView(this);//header is QUANTITY
    //  labelWEIGHT.setId(200 + count);
    labelWEIGHT.setPadding(2, 6, 5, 0);
    labelWEIGHT.setText(quantity.toString());
    labelWEIGHT.setTextColor(Color.BLACK);
    tr.addView(labelWEIGHT);

    labelPRICE = new EditText(this);//header is PRICE...here i need to enter values and save in db
    labelPRICE.setTextColor(Color.BLACK);
    labelPRICE.setPadding(2, 6, 5, 0);
    labelPRICE.setId(Integer.valueOf(rowId));
    ar1[i]=rowId;//row id
    tr.addView(labelPRICE);

    tl.addView(tr, new TableLayout.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));
    count++;

基本上,我是 android 的初学者,因此在使用 textview 和 edittext 进行 tablelayout 程序时我需要帮助。我无法将用户输入的 edittext 值存储在数据库中。我试图获取行每行的 id,但无法得到。谁能帮助我。

这是我的布局。

【问题讨论】:

贴出你试过的代码。 这是代码...我需要在 EditText(in Price) 中输入值并使用 JSON 保存在数据库中 【参考方案1】:

您可以先读取数据,然后将其转储到数据库中。可以通过连续知道编辑文本的位置来轻松完成

例如:

TableRow row = (TableRow)tableLayout.getChildAt(rowPosition);
EditText edit = (EditText) row.getChildAt(0);
String text = edit.getText().toString();

在上面的代码中,我们认为edittext在其行中的第0个位置并且读取了值。

【讨论】:

【参考方案2】:

首先,您可以使用以下方法在 EditText 中获取用户输入的值。

myEditText.getText().toString() ;

其次,为了将值存储在数据库中,您应该创建一个扩展 SQLiteOpenHelper 的自定义类。

public class MyDatabaseHandler extends SQLiteOpenHelper

重写该类的onCreate和onUpgrade方法后,创建如下方法处理插入方法:

 public void addNewData(String value)

    try
    
        ContentValues values = new ContentValues();

        values.put([name of the column in your database for this value],value);

        getWritableDatabase().insertOrThrow([name of your table], null, values);
    

    catch (SQLiteException sqlExc)
    
        sqlExc.printStackTrace();
    

    catch (Exception exc)
    
        exc.printStackTrace();
    

如需在 Android 中使用 SQlite 数据库的完整教程,you can study this article.

【讨论】:

我没有使用 SQLite 数据库...请您提出其他建议。 在 android 中还有很多其他的数据存储选项。尝试更具体地说明您的问题并编辑您的问题 是的,我已经添加了我的源代码和我的输出截图...我需要输入价格值并使用 JSON 保存在数据库中。现在你能帮我吗。

以上是关于TableLayout 与 TextView 和 EditText 使用 android Studio的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置TextView的布局权重

如何在 TableLayout 中添加 editText.addTextChangedListener

ImageView不会在RelativeLayout中包装内容

以编程方式设置 TextView 的布局权重

布局与控件-TableLayout和VideoView

格式化新的 TableRow(以编程方式)