基於一些教程,我嘗試着做一個簡單的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在項目上(真或假),我改變了佈局。
任何輸入將非常感激!
順便說一句,這是什麼,我試圖做一個簡單的例子...
取而代之,您可以在視圖中使用相同的佈局和可見性。這種設計很簡單。如果你需要他們,然後使其可見,否則奇怪的是使其隱形 – 2013-02-15 12:52:09