android - 在android中创建带边框的动态TableView?

标签 android

我想这样创作。 enter image description here

我的代码是..

void fillCountryTable() {
  TableRow row;
  TextView tv_lession, tv_price, tv_line;
  CheckBox chkbox;

  int dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
    (float) 1, getResources().getDisplayMetrics());

  for (int current = 0; current < lession.size(); current++) {
   row = new TableRow(this);

   TableRow.LayoutParams llp = new TableRow.LayoutParams(
     );
   llp.setMargins(2, 2, 2, 2);// 2px right-margin

   // New Cell
   LinearLayout cell = new LinearLayout(this);

   cell.setBackgroundColor(Color.BLUE);
   cell.setLayoutParams(llp);// 2px border on the right for the cell

   tv_lession = new TextView(this);
   tv_lession.setTextColor(getResources().getColor(color.darker_gray));
   tv_price = new TextView(this);
   tv_price.setTextColor(getResources().getColor(color.darker_gray));
   chkbox = new CheckBox(this);
   chkbox.setId(current);

   tv_lession.setText(lession.get(current));
   tv_price.setText(price.get(current));

   tv_lession.setTypeface(null, 1);
   tv_price.setTypeface(null, 1);

   tv_lession.setTextSize(15);
   tv_price.setTextSize(15);

   tv_lession.setWidth(50 * dip);
   tv_price.setWidth(150 * dip);
   chkbox.setWidth(50 * dip);
   tv_lession.setPadding(20 * dip, 0, 0, 0);

   cell.addView(tv_lession);
   cell.addView(tv_price);
   cell.addView(chkbox);

   // row.setBackgroundColor(color.black);
   row.addView(cell);

   ((TableLayout) findViewById(R.id.course_outline_table)).addView(
     row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,
       LayoutParams.WRAP_CONTENT));

   chkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView,
      boolean isChecked) {
     if (isChecked) {
      subTotal += Integer.parseInt(price.get(buttonView
        .getId()));
      total = subTotal + tax;
     } else {
      subTotal -= Integer.parseInt(price.get(buttonView
        .getId()));
      total = subTotal + tax;
     }

     ((TextView) findViewById(R.id.tv_subTotal))
       .setText(subTotal + "");
     ((TextView) findViewById(R.id.tv_total))
       .setText(total + "");
    }
   });

  }
 }

最佳答案

检查这个解决方案:

        TableRow row;

        shoppingCardDetails = new ArrayList<ShoppingCardDetails>();

        SoapObject courseOutlineObject = (SoapObject) ParserClass.ResponseVector
                .elementAt(3);

        final Vector courseOutline = (Vector) courseOutlineObject
                .getProperty(0);
        //System.out.println(courseOutline);
        //System.out.println("check record" + courseOutline.size());
        for (int current = 0; current < courseOutline.size(); current++) {

            try {

                row = (TableRow) LayoutInflater.from(this).inflate(
                        R.layout.table_row, null);
                chkbox = (CheckBox) row.findViewById(R.id.chkBox);
                chkbox.setId(current);

                ((TextView) row.findViewById(R.id.coursename))
                        .setText(((SoapObject) courseOutline.elementAt(current))
                                .getProperty("tocName").toString());

                ((TextView) row.findViewById(R.id.tvcourseprice))
                        .setText(((SoapObject) courseOutline.elementAt(current))
                                .getProperty("tocPrice").toString());

                /*
                 * if ((((SoapObject) courseOutline.elementAt(current))
                 * .getProperty("tocLevel") + "").equalsIgnoreCase("0")) {
                 * 
                 * ((LinearLayout) row.findViewById(R.id.llrow))
                 * .setBackgroundColor(Color.parseColor("#F2F5A9"));
                 * 
                 * }
                 */
                if ((((SoapObject) courseOutline.elementAt(current))
                        .getProperty("tocEnrollStatus") + "")
                        .equalsIgnoreCase("true")) {

                    chkbox.setVisibility(View.INVISIBLE);
                    ((TextView) row.findViewById(R.id.tvEnrolled))
                            .setVisibility(View.VISIBLE);
                    ((TextView) row.findViewById(R.id.tvcourseprice))
                            .setVisibility(View.VISIBLE);

                }

                ((TableLayout) findViewById(R.id.course_outline_table))
                        .addView(row);

                chkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                    @overide
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {

                        try {
                            ShoppingCardDetails shoppingdetails = new ShoppingCardDetails();

                            if (isChecked) {

                                subTotal += 1;
                                total = subTotal;
                                shoppingdetails.name = ((SoapObject) courseOutline
                                        .elementAt(buttonView.getId()))
                                        .getProperty("tocName").toString();
                                shoppingdetails.price = ((SoapObject) courseOutline
                                        .elementAt(buttonView.getId()))
                                        .getProperty("tocPrice").toString();
                                shoppingCardDetails.add(shoppingdetails);

                            } else {
                                subTotal -= 1;
                                total = subTotal;

                                shoppingCardDetails.remove(total);

                            }

                            ((TextView) findViewById(R.id.btnRightHeader))
                                    .setText("" + total);

                            ((TextView) findViewById(R.id.btnRightHeader))
                                    .setPadding(30, 0, 0, 15);
                            ((TextView) findViewById(R.id.btnRightHeader))
                                    .setTextColor(Color.WHITE);

                        } catch (Exception e) {
                            // TODO: handle exception
                        }
                    }
                });
            } catch (Exception e) {
                // TODO: handle exception
            }

        }

关于android - 在android中创建带边框的动态TableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846206/

相关文章:

java - Surface在Android上被parceled后如何处理垃圾回收?

java - 解析列表中的 jsoup 得到错误的结果

Unity3d 应用程序中的 Android 菜单按钮

android - 确定是否是第一次使用 Android 应用程序

android - 在 Android 中获取 503 作为 Http 响应?

android - 在旋转矢量传感器中使用标量组件?

android - 如何为android选项菜单获取白色背景主题?

java - Android 应用程序在启动前崩溃

android - 什么更快?一个 intent.putExtras(Bundle with Strings) 还是多个 intent.putExtra(String)?

java - 获取出现在 ListView 外部的 edittext 值,获取 OnItemClick 内部的 edittext 值