0

データグリッドのような ListView を表示したいアクティビティがあります。arraylist ITransducer[] は動的であり、arraylist を使用して listview の列を生成したいと考えています。

リストビュー

ITransducer1 | ITransducer2 | ITransducer3

aa1 | aa2 | aa3

getView() メソッドをオーバーライドしましたが、このようにリストビューのレイアウトをロードする必要があります view = vi.inflate(R.layout.historical_data_details_item, null);

ITransducer[] でリストビュー レイアウトを動的に生成できますか?

public class HistoricalDataDetailsActivity extends Activity {
ListView lvDetails;
Context context;
IDAL idal;
TransducerFactory tFactory;

@Override
protected void onCreate(Bundle savedInBundleState) {
    super.onCreate(savedInBundleState);
    setContentView(R.layout.historical_data_details);
    context = this;
    tFactory = new TransducerFactory();
    lvDetails = (ListView) findViewById(R.id.lvDetails);
}

@Override
protected void onStart() {
    super.onStart();
    ITransducer[] its = new ITransducer[]{
        new AbsTransducer("aa1", TransducerType.AirPressure),
        new AbsTransducer("aa2", TransducerType.AirPressure),
        new AbsTransducer("aa3", TransducerType.Temperature)
    };

// ListViewItemAdapter adapter = new ListViewItemAdapter(this, R.layout.historical_data_details_item,its); // lvDetails.setAdapter(アダプター); }

class ListViewItemAdapter extends ArrayAdapter<ITransducer>{
    boolean HasHeader = false;

    public ListViewItemAdapter(Context context, int textViewResourceId, ITransducer[] objects){
        super(context, textViewResourceId, objects);

    }

    public View getView(int position, View convertView, ViewGroup parent){
        View view = convertView;
        if(view == null){
            LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.historical_data_details_item, null);

            TextView tvDate = new TextView(context);
            tvDate.setLayoutParams(new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT));
            tvDate.setText("DateTime");

            LinearLayout layout = (LinearLayout) view.findViewById(R.id.tLayout);
            layout.addView(tvDate);
            view = layout;

        }else
            view = convertView;

        return view;
    }
}

}

4

1 に答える 1

0
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {

       if (aa1!= null) {
            holder.aa1_tv.setText(aa1.getName());
        }
       if (aa2!= null) {
            holder.aa2_tv.setText(aa2.getName());
        }
       if (aa3!= null) {
            holder.aa3_tv.setText(aa3.getName());
        }
}

aa1/aa2/aa3データベースで初期化できる列を表すクラスのオブジェクトを次に示します。

于 2013-04-09T10:59:29.107 に答える