2012-03-26 30 views
7

Tôi muốn thực hiện một giao diện tùy chỉnh như Pinterest trong mã của tôi, tôi sử dụng scrollview và 3 LinearLayout bên scrollview tôi tùy chỉnh xem tên waterfallView của tôi ở đây là đoạn code:Layout như Pinterest

public class WaterfallView extends LinearLayout { 

private ListAdapter m_Adapter; 
private OnClickListener onClickListener = null; 
private LinearLayout m_Line1; 
private LinearLayout m_Line2; 
private LinearLayout m_Line3; 

public WaterfallView(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    InitLine(); 
} 

public WaterfallView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    InitLine(); 
} 

private void InitLine() { 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT); 
    lp.weight = 1; 

    // line2 
    m_Line1 = new LinearLayout(this.getContext()); 
    m_Line1.setOrientation(VERTICAL); 
    m_Line1.setLayoutParams(lp); 

    // line2 
    m_Line2 = new LinearLayout(this.getContext()); 
    m_Line2.setOrientation(VERTICAL); 
    m_Line2.setLayoutParams(lp); 

    // line3 
    m_Line3 = new LinearLayout(this.getContext()); 
    m_Line3.setOrientation(VERTICAL); 
    m_Line3.setLayoutParams(lp); 

    addView(m_Line1); 
    addView(m_Line2); 
    addView(m_Line3); 
} 

public ListAdapter getAdapter() { 
    return m_Adapter; 
} 

private void BindLayout() { 
    int count = m_Adapter.getCount(); 
    for (int i = 0; i < count; i++) { 
     View v = m_Adapter.getView(i, null, null); 
     v.setOnClickListener(this.onClickListener); 
     if (i == 0 || i % 3 == 0) 
      m_Line1.addView(v); 

     if (i == 1 || i % 3 == 1) 
      m_Line2.addView(v); 

     if (i == 2 || i % 3 == 2) 
      m_Line3.addView(v); 
    } 
    Log.v("countTAG", "" + count); 
} 

private void AddItem(){ 

} 

public void setAdapter(ListAdapter adapter) { 
    this.m_Adapter = adapter; 
    BindLayout(); 
} 

public OnClickListener getOnclickListner() { 
    return onClickListener; 
} 

public void setOnclickLinstener(OnClickListener onClickListener) { 
    this.onClickListener = onClickListener; 
    } 
} 

Trong BindLayout chức năng có m_Adapter.getView(i, null, null); sau đó paramView thứ hai convertView tôi muốn có lớp AbsListView bằng cách sử dụng RecycleBin Làm thế nào tôi có thể làm điều đó?

Pinterest 3 column layout

+2

Tôi không hiểu câu hỏi .. Ông có thể được chính xác hơn? Hoặc kiểm tra lại câu của bạn cho các từ bị thiếu? –

+0

Dcboy bạn có nhận được loại đầu ra này trong android không? –

+0

Tôi đã trả lời này trên stackoverflow [ở đây] [1] [1]: http://stackoverflow.com/questions/12442795/pinterest-like-grid-in-android – Maurycy

Trả lời