ListView中显示不同的item,一般应用在插广告什么的:
直接说思路:
材料:
一个主页面---------------activity_list_man 下嵌套个ListView
若干个子页面------------ListView的item实现:取名为:listview_one_item 和listview_two_item
一个主页面对应的Activity-------------------ListMainActivity
一个设置ListView的适配器-----------------MyAdapter
还有就是集合实体的对象:渲染适配器的------------------List<MyClass>
大概大的方面就是这几个东西了:
主页面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.guangbo.ListMainActivity" >
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listview"
>
</ListView>
</RelativeLayout>
listview对应的若干子页面:
1.listview_one_item :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:text="我是文本"
android:id="@+id/one"
android:layout_alignParentTop="true"
/>
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:text="我是文本2"
android:id="@+id/two"
android:layout_centerInParent="true"
/>
</RelativeLayout>
2.listview_two_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:text="我是文本"
android:id="@+id/ones"
/>
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:text="我是文本"
android:id="@+id/twos"
/>
</LinearLayout>
数据实体类:
public class MyClass implements Serializable{
private String username;
private String psw;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPsw() {
return psw;
}
public void setPsw(String psw) {
this.psw = psw;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我把适配器写在了Activity中,所以一起贴上Activity代码:
public class ListMainActivity extends Activity {
private ListView listview;
private List<MyClass> list=new ArrayList<MyClass>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_main);
listview=(ListView)findViewById(R.id.listview);
list=getDate();
MyAdapter myadapter=new MyAdapter(ListMainActivity.this);
listview.setAdapter(myadapter);
}
private List<MyClass> getDate()
{
List<MyClass> lists=new ArrayList<MyClass>();
for(int i=0;i<5;i++)
{
MyClass myclass=new MyClass();
myclass.setPsw("密码"+i);
myclass.setUsername("账号"+i);
myclass.setAge(i);
lists.add(myclass);
}
return lists;
}
class MyAdapter extends BaseAdapter
{
private LayoutInflater mInflater=null;
private ViewHolder holder;
public MyAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
holder = new ViewHolder();
if (null == convertView) {
if(arg0%2==0)
{
convertView=mInflater.inflate(R.layout.listview_one_item, null);
holder.one=(TextView) convertView.findViewById(R.id.one);
holder.two=(TextView)convertView.findViewById(R.id.two);
}
else
{
convertView=mInflater.inflate(R.layout.listview_two_item, null);
holder.one=(TextView)convertView.findViewById(R.id.ones);
holder.two=(TextView)convertView.findViewById(R.id.twos);
}
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
String username=list.get(arg0).getUsername();
holder.one.setText(list.get(arg0).getUsername());
holder.two.setText(list.get(arg0).getPsw());
return convertView;
}
}
class ViewHolder {
public TextView one;
public TextView two;
}
}
搞定:
其实总结起来,做这个效果的最核心是:根据不同的条件,选择不同的Layout,然后填上数据