ListView中显示不同的item
来源:互联网 发布:mac 垃圾清理软件 编辑:程序博客网 时间:2024/05/16 11:38
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,然后填上数据
- ListView中显示不同的item
- ListView显示不同的item
- 2012-7-18 在ListView中显示不同的ITEM
- listview中显示两种不同的item
- 不同布局的Item在listView中显示
- 一个ListView中显示不同的item(分组)
- listView的item显示不同布局
- Android listview中,不同的Item显示不同的layout ---- BaseAdapter
- Android listview中,不同的Item显示不同的layout ---- BaseAdapter
- listView中 的不同item类型
- Android listView 中嵌套不同的item
- Android listView 中嵌套不同的item
- ListView中item的不同布局
- listview item显示不同布局
- 在listview的每一行item中,显示不同的图片
- RecyclerView中显示不同的item
- android listView的item 显示多种不同的布局
- android Listview显示不同的item遇到的问题
- C#-密度较量
- 2016蓝桥杯第二题 依旧水题
- HttpClient请求的结果中中文显示乱码,可用UTF-8
- Java中的length、length()、size的用法
- 使用存储过程进行分页查询
- ListView中显示不同的item
- Dalvik与ART的区别:
- CDOJ 1134 男神的约会
- 新手笔记之安卓自定义title标题栏使用
- 快速递归算法遍历生成De Bruijn序列
- 2016蓝桥杯第三题
- C++实现双向链表
- LeetCode 21 Merge Two Sorted Lists
- UNIX BUILD NOTES