Narasimha
Narasimha

Reputation: 3766

how can implemented adding more views in dynamic layout implementing scrollview in android

i am implementing custom linearlayout in this adding more views retrieve database using webservices in back ground process all data are retrive messages and message related userimages also first initally loading messages after one by one loading images in custom linear layout

main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/frameLayout1" android:layout_width="fill_parent" android:background="@android:color/white"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent">
    <ScrollView android:id="@+id/scrollView1" android:layout_height="wrap_content" android:layout_width="fill_parent">
        <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout2" android:layout_height="fill_parent">
            <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout3" android:layout_height="fill_parent">
                <ImageView android:id="@+id/person" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
                <TextView android:textColor="@android:color/black" android:id="@+id/textView1" android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</FrameLayout>

codefile:

public class MYlist extends Activity 
{
    /** Called when the activity is first created. */
    List<MessageClass> messages;
    int i=0,n=5;
     ParseXMLString parse=new ParseXMLString();
     DataParsingComm dataparsing=new DataParsingComm();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String xml="<spGetUserMessages><SearchLocation></SearchLocation><LoginUserID>125</LoginUserID></spGetUserMessages>";
        messages =parse.GetGetUserMessages(dataparsing.ILGetUserMessages(xml));


        addElements(messages,i,n);
    }

    protected void addElements(final List<MessageClass> messages2,int i,int n) 
    {
        int k=0;
     //((LinearLayout)findViewById(R.id.linearLayout1)).removeAllViews();

        for(int i1=i;i1<n;i1++)
        {
            LinearLayout ll1=((LinearLayout)findViewById(R.id.linearLayout2));
            ll1.setBackgroundResource(R.drawable.tabmessage);
            Log.v("11111111","333"+ i1+ n);
          if(k==i1)
          {
            for(int j1=i1;j1<n;j1++)
            {

            TextView msg=((TextView)findViewById(R.id.textView1));
            msg.setText(messages2.get(j1).getmessage());

            }
          }
            ImageView prsnImg=((ImageView)findViewById(R.id.person));
        try{
            String photoXml="<spGetUserPhoto><UserID>125</UserID></spGetUserPhoto>";

            String photoInfoFromDB=new DataParsingComm().ILGetImage(photoXml);

            if(photoInfoFromDB.equalsIgnoreCase("anyType{}")||photoInfoFromDB.equals(null) )
            {
                prsnImg.setImageResource(R.drawable.person);
            }
            else{

                byte[] imgArry= Base64.decode(photoInfoFromDB);

                Bitmap bit=BitmapFactory.decodeByteArray(imgArry,0,imgArry.length);

                prsnImg.setImageBitmap(bit);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        finally
            {
                System.gc();
                System.runFinalization();
            }

        }

    }
}

screenshot: http://www.freeimagehosting.net/uploads/8437c22cca.png

my problem is every time display one item all data override that single item view in layout how can implemented one by one display views in linear layout

please tell me some solution thanks in advance

Upvotes: 1

Views: 864

Answers (1)

MobileCushion
MobileCushion

Reputation: 7095

That is because you are always selecting the same two objects...

There is a very basic way of obtaining what I think you might want:

main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout1" 
    android:layout_width="fill_parent" 
    android:background="@android:color/white" 
    android:layout_height="fill_parent">
    <ScrollView android:id="@+id/scrollView1" 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent">

    </ScrollView>
</FrameLayout>

.java

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView1);

        LinearLayout topLinearLayout = new LinearLayout(this);
        topLinearLayout.setOrientation(LinearLayout.VERTICAL); 

        for (int i = 0; i < 15; i++){

            LinearLayout linearLayout = new LinearLayout(this);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL); 

            ImageView imageView = new ImageView (this);
            TextView textView = new TextView (this);

            imageView.setImageResource(R.drawable.image);
            textView.setText("Text View #" + i);

            linearLayout.addView(imageView);
            linearLayout.addView(textView);

            topLinearLayout.addView(linearLayout);          

        }

        scrollView.addView(topLinearLayout);

    }

You can also define the topLinearLayout object in the xml file. It is up to you.

Upvotes: 1

Related Questions