基于一些教程,我尝试着做一个简单的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