2012-08-07 87 views
2

我想創建這樣的。 enter image description here在android中創建動態的帶有邊框的TableView?

我的代碼..

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 + ""); 
    } 
    }); 

    } 
} 
+1

還有呢?你有什麼問題 ? – AMerle 2012-08-07 12:45:16

+0

告訴我們東西 – 2012-08-07 14:15:20

回答

1

檢查這個解決方案

 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 
      } 

     } 
+0

謝謝@Ashwani Tyagi – 2012-10-04 05:42:49

相關問題