2013-02-15 119 views
1

基於一些教程,我嘗試着做一個簡單的android應用程序,它顯示一個帶有字符串的列表。 問題是當我試圖向列表項目引入新佈局時。帶有多個列表項目佈局的Android列表

所以你會:

listItem1 - >佈局1

listItem2 - >佈局2

listItem3 - >佈局1

當我嘗試添加新的佈局,滾動時,我的物品變得「混亂」。例如,它會顯示item1,item2,item3,item4 ...,當向下滾動並返回時,我的列表將顯示爲:item40,item3,item20,item1等

下面是我擁有的代碼:

(該activity_main.xml中的文件有一個的LinearLayout> ListView控件)

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    items = new ArrayList<String>(); 
    for (int i = 0; i < 50; i++){ 
     items.add(i%2==0 ? "true" : "false"); 
    } 

    ListView listView = (ListView) findViewById(R.id.ListViewId); 
    listView.setAdapter(new ListItemAdapter(this, android.R.layout.simple_list_item_1, items)); 

} 

(LIST_ITEM_1和LIST_ITEM_2與一個TextView佈局)

public class ListItemAdapter extends ArrayAdapter<String> { 
private ArrayList<String> items; 
private LayoutInflater mInflater; 

public ListItemAdapter(Context context, int textViewResourceId, 
     ArrayList<String> items) { 
    super(context, textViewResourceId, items); 
    this.items = items; 
    mInflater = (LayoutInflater)this.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    int type = items.get(position).equals("true") ? 0 : 1; 
    if (convertView == null) { 
     switch(type){ 
     case 1: 
      convertView = mInflater.inflate(R.layout.list_item_1, null); 
      break; 
     case 0: 
      convertView = mInflater.inflate(R.layout.list_item_2, null); 
      break; 
     } 

    } 
    String item = items.get(position); 
    if (item != null) { 
     switch(type){ 
     case 1: 
      TextView text = (TextView) convertView.findViewById(R.id.day); 
      if (text != null) { 
       text.setText(item); 
      }   
      break; 
     case 0: 
      TextView day = (TextView) convertView.findViewById(R.id.text); 

      if (day != null) { 
       day.setText(item); 
      } 
      break; 
     } 

    } 

    return convertView; 
} 
} 

正如你所看到的,dependi在項目上(真或假),我改變了佈局。

任何輸入將非常感激!

順便說一句,這是什麼,我試圖做一個簡單的例子...

+0

取而代之,您可以在視圖中使用相同的佈局和可見性。這種設計很簡單。如果你需要他們,然後使其可見,否則奇怪的是使其隱形 – 2013-02-15 12:52:09

回答

1

請重寫getViewTypeCount()getItemViewType(int)方法了。它應該工作。也請通過這個鏈接Android ListView with different layouts for each row

+0

,添加這些方法覆蓋工作。沒有更多的項目爭先恐後:)。 – 2013-02-15 13:10:59

相關問題