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>

行番号を持つように変更される各行の最初のテキストビュー (つまり tv1) のテキストを除いて、すべてが最初の行のクローンである 10 行を動的に作成したいと考えています。したがって、Row1、Row2、Row3.....Row10 になります。

どうすればそれを達成できますか?

4

3 に答える 3

0

行を配置できる線形レイアウトを 1 つ取ります。

  <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 に答える