1

我有以下 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 行,其中所有行都是第一行的克隆,除了每行(即 tv1)的第一个 textview 的文本要更改为具有行号。所以它将是 Row1, Row2 , Row3 .....Row10

我怎样才能做到这一点?

4

3 回答 3

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"   /> 

并使用此代码通过将此布局膨胀到表格行来动态创建表格行

于 2013-09-02T06:26:07.047 回答
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));
    }
        }
于 2013-09-02T06:35:56.217 回答
0

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

于 2013-09-02T06:26:51.987 回答