#android #views #android-linearlayout
#Android #Вид #android-linearlayout
Вопрос:
я реализую пользовательское linearlayout в этом, добавляя дополнительные представления, извлекаю базу данных с помощью веб-сервисов в фоновом процессе, все данные представляют собой повторные сообщения, и связанные с сообщениями пользовательские изображения также сначала загружают сообщения после того, как одно за другим загружаются изображения в пользовательском линейном макете
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>
кодовый файл:
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();
}
}
}
}
скриншот: http://www.freeimagehosting.net/uploads/8437c22cca.png
моя проблема в том, что каждый раз, когда отображается один элемент, все данные переопределяют этот вид одного элемента в макете, как можно реализовать одно за другим отображение представлений в линейной компоновке
пожалуйста, подскажите мне какое-нибудь решение, заранее спасибо
Ответ №1:
Это потому, что вы всегда выбираете одни и те же два объекта…
Существует очень простой способ получить то, что, я думаю, вам может понадобиться:
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);
}
Вы также можете определить topLinearLayout
объект в XML-файле. Это зависит от вас.
Комментарии:
1. Я обновил свой ответ некоторым базовым кодом, который вы можете счесть полезным.