有时候我们的需求会有
一个ListView要加载两种布局,一个是居中,一个是上面平分Item,以前好傻逼,搞两个布局来回切换,不忍回头看。
xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/structure_item_lay"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:descendantFocusability="blocksDescendants"
android:minHeight="40dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="vertical"
android:gravity="center_vertical"
>
<TextView
android:id="@+id/id_treenode_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="5dp"
android:gravity="center_vertical"
android:ellipsize="end"
android:minWidth="180dp"
android:singleLine="true"
android:text="@string/app_name"
android:textColor="#8e8e8e"
android:textSize="16dip" />
<TextView
android:id="@+id/id_treenode_online"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="5dp"
android:gravity="center_vertical"
android:ellipsize="end"
android:minWidth="180dp"
android:singleLine="true"
android:text="@string/app_name"
android:textColor="#8e8e8e"
android:textSize="12dip"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
</pre><pre name="code" class="html">activity :
public class MainActivity extends ActionBarActivity {
private List<Item> itemList = new ArrayList<Item>();
private ListView list ;
private ItemAdapter itemAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initId();
initData();
itemAdapter = new ItemAdapter(getApplicationContext(), itemList);
list.setAdapter(itemAdapter);
}
public void initId()
{
list = (ListView)findViewById(R.id.list);
}
public void initData()
{
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", "1"));
itemList.add(new Item("A", ""));
itemList.add(new Item("A", "1"));itemList.add(new Item("A", "1"));
}
}
</pre><pre name="code" class="java">Item :
public class Item {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
Item(String name, String age) {
this.name = name;
this.age = age;
}
}
adapter:
public class ItemAdapter extends BaseAdapter{
private List<Item> itemList = new ArrayList<Item>();
private LayoutInflater inflater;
public ItemAdapter(Context c,List<Item> itemList) {
// TODO Auto-generated constructor stub
inflater = LayoutInflater.from(c);
this.itemList = itemList ;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return itemList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(
R.layout.mobark_organizational_structure_item, null);
holder.name = (TextView) convertView
.findViewById(R.id.id_treenode_label);
holder.age = (TextView) convertView
.findViewById(R.id.id_treenode_online);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(itemList.get(position).getName());
if(!TextUtils.isEmpty(itemList.get(position).getAge()))
{
holder.age.setVisibility(View.VISIBLE);
holder.age.setText(itemList.get(position).getAge());
}else
{
holder.age.setVisibility(View.GONE);
}
return convertView;
}
class ViewHolder {
TextView name;
// TextView department;
TextView age;
TextView header;
// View divider;
}
}