在我的listView
我有3行類型,TXT,IMG,SMS。每個人都有不同的行佈局和正常工作是這樣的:Android ListView - 添加動態行到行
... extends BaseAdapter ...
public View getView(int position, View convertView, ViewGroup parent) {
TextViewHolder textViewHolder = null;
ImageHolder imageHolder = null;
SmsHolder smsHolder = null;
//PlaceHolder placeHolder = null;
ConversionModel conversion = getItem(position);
int type = conversion.type;
if (convertView == null) {
if(type == ConversionModel.TXT) {
textViewHolder = new TextViewHolder();
convertView = mInflater.inflate(R.layout.convers_txt, null);
textViewHolder.textView = (TextView)convertView.findViewById(R.id.row_txt);
convertView.setTag(textViewHolder);
}
if(type == ConversionModel.IMG) {
imageHolder = new ImageHolder();
convertView = mInflater.inflate(R.layout.convers_img, null);
imageHolder.img = (ImageHolder)convertView.findViewById(R.id.row_txt);
convertView.setTag(textViewHolder);
}
....
}
...
}
我的目的是:
-alllist-----------
----txt------------
----img------------
-----(multipledata) //placeholder must has dynamic rows in it
--------button-----
--------button-----
---sms-------------
.....
我的佔位符必須有動態的行,因爲我不知道數據的數字,來自服務器。我試圖做到這一點嵌套的ListView但它只shows first data in the list.
而且我把LinearLayout
到placeHolder
並添加這樣的(僞)項目:
for data in datas {
Button btn = new Button(ctx)
...
placeHolder.layout.addView(btn);
}
但每當我滾動listView
,getView
方法是搞亂和當它應該是2-3時,它會呈現相同的按鈕將近10-20次。
我該如何做到這一點?我查看了像Telegram這樣的應用源,但找不到類似的方法。
解決方案:
String arr[] = conversion.message.split(Pattern.quote("$$"));
LinearLayout layHolder = new LinearLayout(ctx);
for (int i = 0; i < arr.length; i++) {
Button test_btn = new Button(ctx);
//PlaceModel pm = new PlaceModel(arr[i]);
layHolder.addView(test_btn);
}
placeHolder.linearLay.removeAllViews(); //<- THIS
placeHolder.linearLay.addView(layHolder);
添加以下主要內容(圖片或文字)的線性佈局,並在線性佈局添加按鈕。 – Harry
感謝您的幫助,現在就試試。 – Lazy