【问题标题】:getting values of the row on a button click which is in that row单击该行中的按钮获取该行的值
【发布时间】:2013-06-19 11:10:41
【问题描述】:

我的 android 应用程序正在填充从 sqlite 数据库以编程方式创建的表格布局。表格布局的最后一列有两个按钮。这两个按钮通过线性布局分配到一列。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    35, 35);

            params.setMargins(10, 0, 10, 0);
            seventhCol1=new Button(this);
            seventhCol1.setText("A");
            seventhCol1.setLayoutParams(params);
            //seventhCol1.setLayoutParams(new LayoutParams(30, 30));
            seventhCol1.setId(71);
            seventhCol1.setOnClickListener(mListener);

            seventhCol2=new Button(this);
            seventhCol2.setText("C");
            seventhCol2.setLayoutParams(params);
            seventhCol2.setId(72);
            seventhCol2.setOnClickListener(nListener);

            btn_linear=new LinearLayout(this);
            btn_linear.setOrientation(LinearLayout.HORIZONTAL);
            btn_linear.addView(seventhCol1);
            btn_linear.addView(seventhCol2);
            btn_linear.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
            btn_linear.setGravity(Gravity.CENTER);
            tr.addView(btn_linear);

单击按钮seventhCol1 我想从单击该按钮的特定行中获取数据...我该怎么做???? 我试过用这种方法:

tr.setOnClickListener(rowclickListner);

private OnClickListener rowclickListner=new OnClickListener() {

    @Override
    public void onClick(View v) {


// TODO Auto-generated method stub
    TableLayout tl=(TableLayout) v.getParent();
    /*TableRow tr=(TableRow) tl.getParent();*/
    TableRow tr=(TableRow) tl.getParent();
    TextView tv_mobile=(TextView)tr.getChildAt(2);
    String mobile=tv_mobile.getText().toString();

    Toast.makeText(LeadManagement.this, mobile, Toast.LENGTH_LONG).show();
    /*ArrayList<String> leaddetails=mDbHelper.getTableDetails("lead_table", mobile);
     prefEditor.putBoolean("leadbundle", true);
     prefEditor.commit();
     startActivity(new Intent(LeadManagement.this,CreateLead.class).putExtra("leadlist", leaddetails));*/
    }
};

但它显示错误!我该怎么做?

【问题讨论】:

  • 你遇到了什么错误?
  • @7bluephoenix 数据来自数据库...行是动态创建的...我应该如何使用 xml 来设计它?
  • @shivani 为什么不使用ListView 而不是表格视图?因为如果数据库返回的值因查询而异,那么最好使用ListView
  • @7bluephoenix listview 在我的情况下是不可能的..我正在显示数据库中的七列..它必须在表格布局中
  • @Segi 我收到一个错误,例如 TableLayout 无法转换为表格行

标签: android button tablerow


【解决方案1】:

不要将onClickListener 注册为类成员,而是注册为匿名对象。比如:

Button tr = // your button corresponding to N-th row
        final RowData rowData = ... // get the data from row N
        tr.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                someMethodCall(rowData)
            }
        });

【讨论】:

  • 这将是一种低效的方法...为每个按钮创建匿名方法!!!!!! n 我不确定它对解决所提问题有多大帮助。
  • @gunar 行无法确定...正在从数据库中填充。
  • 考虑到您正在创建这种布局,为每个按钮创建的额外匿名对象数量无关紧要。为什么不使用 ListView/GridView 而不是 TableLayout?在那里您可以实现ViewHolder 模式,并且对于每个getView 调用,您可以通过删除前一个来设置一个新的onClickListener。
  • @gunar 我的要求是表格布局..在列表视图的一行中显示七个值有点难看
  • @gunar :D 我向她(OP)提出了同样的建议,但似乎她必须在TableLayout 中显示她的价值观
猜你喜欢
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2020-09-11
  • 2022-01-28
相关资源
最近更新 更多