0

I am creating a list view where each row have two parts left is an image view and right part is containing some text fields.but the field should load dynamically.. means that value from 0 to 9 will come dynamically. I am confused how to work with the right part. I want to create that in java coding .. not in xml.. I create my xml like this ..`

<?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>

` enter image description here

my adapter class is like this::

   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);
                }
            }
        }

My o/p is like thisenter image description here

whats the problem.

Community
  • 1
  • 1
mainu
  • 448
  • 2
  • 11

2 Answers2

0

Create layout dynamically via java Pragmatically code.

Please Check the link. it help you to create layout with view Pragmatically.

Link

Link

Thanks. Good Luck.

Community
  • 1
  • 1
Md Abdul Gafur
  • 6,213
  • 2
  • 27
  • 37
0

If your right part has static layout and only text in fields will change then create an separate xml with that layout and then inflate and fill it with your values in getView() of ListView adapter. Something like this:

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;
}
Dimanoid
  • 6,999
  • 4
  • 40
  • 55