0

我正在创建一个列表视图,其中每一行有两个部分,左边是一个图像视图,右边部分包含一些文本字段。但是该字段应该动态加载..意味着从 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 Pragmatically 代码动态创建布局。

请检查链接。它可以帮助您务实地创建带有视图的布局。

关联

关联

谢谢。祝你好运。

于 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 回答