0

各行に 2 つの部分があるリスト ビューを作成しています。左は画像ビューで、右部分にはいくつかのテキスト フィールドが含まれています。しかし、フィールドは動的にロードする必要があります。0 から 9 までの値が動的に来ることを意味します。正しい部分の操作方法がわかりません。私はJavaコーディングでそれを作成したい.. xmlではありません..私はこのようにxmlを作成します..`

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="2dp"
    android:background="@android:color/white"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="2dp"
        android:layout_weight=".88"
        android:background="#D8D8D8"
        android:clickable="true"
        android:gravity="center"
        android:text="image"
        android:textColor="@android:color/black" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".15"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />
         </LinearLayout>

</LinearLayout>

` ここに画像の説明を入力

私のアダプタークラスは次のようなものです::

   public class SimpleAdapter extends ArrayAdapter<Simple> {
        TextView mImage;
        LinearLayout layout_VER;
        LinearLayout layout_hor;
        private ArrayList<Simple> dd;
        Activity context = null;
        Intent myIntent;

        public SimpleAdapter(Activity context, int textViewResourceId, ArrayList<Simple> objects) {
            super(context, textViewResourceId, objects);
            this.dd = objects;
            this.context = context;
        }

        @Override
        public Simple getItem(int position) {
            // TODO Auto-generated method stub
            return dd.get(position);
        }

        @Override
        public int getCount() {

            return dd.size();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            pos = position;

            if (view == null) {
                LayoutInflater inflater = context.getLayoutInflater();
                view = inflater.inflate(R.layout.row, null);
            }
            view.setTag(pos);
            mImage = (ImageView) view.findViewById(R.id.image);
            if (dd != null) {
                Simple simple = dd.get(position);
                
            }
            
            layout_VER=(LinearLayout)view.findViewById(R.id.dyn_main);
            layout_VER.setTag(pos);
            showDEtails(view, layout_VER, 10);
            return view;
        }

        private void showDEtails(View view, LinearLayout layout_VER2, int Obj ) {
            View myView=view;
            LinearLayout ver_layout=layout_VER2;
            Log.i("showAppointments0000000000","vr_layout:::"+ver_layout.getTag());
            LinearLayout hr_layout1 = (LinearLayout)myView.findViewById(R.id.dyn_new);
            hr_layout1.setTag(ver_layout.getTag()+","+0);
            LinearLayout hr_layout2 =null;
            for (int i = 0; i < Obj i++) {
                if (i > 4) {
                    if (Obj  % 5 == 0) {
                        int mp=Obj  % 5;
                        hr_layout2 = new LinearLayout(context);
                        hr_layout2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
                        hr_layout2.setOrientation(LinearLayout.HORIZONTAL);
                        hr_layout2.setTag(ver_layout.getTag()+","+mp);
                    }      
                    TextView text = new TextView(context);
                    text.setTextSize(12);
                    text.setGravity(Gravity.LEFT);
                    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
                    layoutParams.setMargins(2, 2, 2, 2);
                    text.setLayoutParams(layoutParams);
                    text.setPadding(3, 3, 3, 3);
                    text.setClickable(true);
                    hr_layout2.addView(text);               
                }else{
                    TextView text = new TextView(context);
                    text.setText("Value of j is : " + i);
                    text.setTextSize(12);
                    text.setGravity(Gravity.LEFT);
                    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
                    layoutParams.setMargins(2, 2, 2, 2);
                    text.setLayoutParams(layoutParams);
                    hr_layout1.addView(text);
                    text.setClickable(true);
                    text.setPadding(3, 3, 3, 3);
                }
            }
        }

私のo / pはこのようなものですここに画像の説明を入力

どうしたの。

4

2 に答える 2

0

Java を介して動的にレイアウトを作成します 実用的なコード。

リンクをご確認ください。ビューを使用して実用的にレイアウトを作成するのに役立ちます。

リンク

リンク

ありがとう。幸運を。

于 2012-10-03T11:09:40.983 に答える
0

右側の部分に静的レイアウトがあり、フィールド内のテキストのみが変更される場合は、そのレイアウトで別の xml を作成し、ListView アダプターの getView() で値を膨らませて入力します。このようなもの:

public View getView(int position, View v, ViewGroup parent) {
        LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = layoutInflater.inflate(mTextViewResourceId, null);
        TextView text = (TextView) v.findViewById(R.id.field1);
        text.setText(mItems.get(position).field1text);
        return v;
}
于 2012-10-03T11:09:50.000 に答える