2012-02-15 6 views
1

ダイナミックなリストビュー(異なるレイアウトやバブルのチャットリストのような)を構築したいと思います。 私の問題は、各行に個別の高さがあることです。下のコードは ですが、下にスクロールしたり、新しいメッセージを受け取ったりするたびに、 高さの異なる行が増加します。Androidの - 各行の高さが異なるリストビュー/ getView()

private class dialogAdapter extends BaseAdapter { 
private LayoutInflater mInflater; 

public dialogAdapter(Context context) { 
    mInflater = LayoutInflater.from(context); 
} 

@Override 
public boolean hasStableIds() { 
    return true; 
} 

public int getCount() { 
    return dialog.size(); 
} 

public int getViewTypeCount() { 
    return 999999; 
} 

public Object getItem(int position) { 
    return dialog.get(position); 
} 

public int getItemViewType(int position) { 
    return position; 
} 

public String getType(int position) { 
    return dialogType.get(position); 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    Log.w("DRAGII", "POS: "+position); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.bubble, null); 
     holder = new ViewHolder(); 
     holder.text = (TextView) convertView.findViewById(R.id.text); 
     holder.parser = new URLImageParser(holder.text); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    if (position <= dialogCache.size()) 
     dialogCache.add(position, Html.fromHtml((String)getItem(position), 
       holder.parser, null)); 
    holder.text.setText(dialogCache.get(position)); 
    holder.type = getType(position); 
    int bubble = R.drawable.bubble; 
    if (holder.type.equals("R")) bubble = R.drawable.bubble_right; 
    else if (holder.type.equals("L")) bubble = R.drawable.bubble_left; 
    holder.text.setBackgroundResource(bubble); 

    return convertView; 
} 

class ViewHolder { 
    TextView text; 
    String type = "B"; 
    URLImageParser parser; 
} 
} 

どうすればよいですか?

答えて

1

ListViewの代わりにTableLayoutを使用してこの問題を解決しました。

0

tableLayoutにtableRowをプログラムで追加する場合、パフォーマンス上の問題が発生します。もう一度考えて、リストビューを使って方法を見つけてください

関連する問題