克隆行在表格布局中

时间:2013-09-02 06:16:05

标签: android android-layout android-tablelayout

我有以下my_layout.xml布局

<TableLayout android:id="@+id/tlTable" android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1,2"  android:layout_marginTop="20dp"  >
        <TableRow android:id="@+id/trRow" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <TextView android:id="@+id/tv1" style="@style/showtext_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Row1" android:layout_marginRight="5dp"/>
            <ProgressBar android:id="@+id/p2" style="?android:attr/progressBarStyleHorizontal" android:progressDrawable="@drawable/greenprogress"  android:layout_width="wrap_content" android:layout_height="wrap_content"  android:layout_marginRight="5dp" />

            <TextView android:id="@+id/tv3"  android:layout_width="wrap_content" android:layout_height="wrap_content"  android:text="0"   />
    </TableRow >
  </TableLayout>

我想动态创建10行,其中所有行都是第一行的克隆,除了要将每行的第一个textview(即tv1)的文本更改为具有行号。所以它将是Row1,Row2,Row3 ..... Row10

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

将此代码放入单独的布局中:

<TextView android:id="@+id/tv1" style="@style/showtext_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Row1" android:layout_marginRight="5dp"/>
<ProgressBar android:id="@+id/p2" style="?android:attr/progressBarStyleHorizontal" android:progressDrawable="@drawable/greenprogress"  android:layout_width="wrap_content" android:layout_height="wrap_content"  android:layout_marginRight="5dp" />
<TextView android:id="@+id/tv3"  android:layout_width="wrap_content" android:layout_height="wrap_content"  android:text="0"   /> 

并通过将此布局扩展到表格行

,使用此代码动态创建表格行

答案 1 :(得分:0)

尝试使用ListView而不是您的方法。

答案 2 :(得分:0)

选择一个可以放置行的线性布局。

  <LinearLayout
        android:id="@+id/list_nearest_aed"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    </LinearLayout>

然后给你的行文件充气:

    private View getView(int position, int subPosition) {
    View view = getLayoutInflater().inflate(R.layout.row, null);
    TextView txtTitel = (TextView) view.findViewById(R.id.txt_titel);
    TextView txtSubTitel = (TextView) view.findViewById(R.id.txt_sub_titel);
    TextView txtType = (TextView) view.findViewById(R.id.txt_type);
    ImageView imgToDetail = (ImageView) view.findViewById(R.id.sub_nearest_aed_img_toDetail);
    final TextView txtPosition = (TextView) view.findViewById(R.id.txt_position);
    LinearLayout layRaw = (LinearLayout) view.findViewById(R.id.lay_raw);
    final double distance = Double.parseDouble(Constant.arrayPin.get(position).get(subPosition).getDistance());
    imgToDetail.setVisibility((distance > 2000.00) ? View.INVISIBLE : View.VISIBLE);

    txtTitel.setText(Constant.arrayPin.get(position).get(subPosition).getAddress());
    txtSubTitel.setText(Constant.arrayPin.get(position).get(subPosition).getAreaOfBuilding());
    txtPosition.setText("" + position + "#" + subPosition);

    txtPosition.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String[] txt = txtPosition.getText().toString().split("#");
            Intent iDetail = new Intent(mContext, PinDeatil.class);
            iDetail.putExtra("position", txt[0]);
            iDetail.putExtra("sub_position", Integer.parseInt(txt[1]));

        }
    });

    return view;
}

然后添加线性布局:

      for (int i = 0; i < Constant.arrayPin.size(); i++) {
    for (int j = 0; j < Constant.arrayPin.get(i).size(); j++) {
        listNearestAED.addView(getView(i, j));
    }
        }
相关问题