在ListView的Item之间任意位置插入view,分割item

package com.xspacing.listviewspace;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Context mContext;
    private CustomListView mListView;
    private MyBaseAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (CustomListView) findViewById(R.id.main_list_view);
        mContext = this;
        final List<Object> list = new ArrayList<Object>();
        // 添加假数据
        for (int i = 0; i < 12; i++) {
            Student student = new Student();
            if (i % 2 == 0) {
                student.name = i + ".阳澄湖大闸蟹";
                student.desc = "9月23日正式开湖";
                student.reId = R.drawable.a25;
                list.add(student);

            } else {
                if (i % 3 == 0) {
                    View view = LayoutInflater.from(mContext).inflate(R.layout.item_list_view_space, null, false);
                    list.add(view);
                } else {
                    student.name = i + ".特大新闻";
                    student.desc = "上海将举行xxx的演唱会";
                    student.reId = R.drawable.a26;
                    list.add(student);
                }
            }
        }
        adapter = new MyBaseAdapter(list, mContext);
        mListView.setAdapter(adapter);
        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(mContext, position + "", 0).show();
            }
        });
    }

}
package com.xspacing.listviewspace;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

public class CustomListView extends ListView {

    public CustomListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CustomListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomListView(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpac = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpac);

    }

}
package com.xspacing.listviewspace;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyBaseAdapter extends BaseAdapter {

    List<Object> list;
    Context mContext;
    // 类型
    public static final int ITEM_VIEW_TYPE_DATA = 0;
    public static final int ITEM_VIEW_TYPE_SPACE = 1;
    public static final int ITEM_VIEW_TYPE_COUNT = 2;

    public MyBaseAdapter(List<Object> list, Context mContext) {
        this.list = list;
        this.mContext = mContext;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    // 类型
    @Override
    public int getItemViewType(int position) {
        return list.get(position) instanceof Student ? ITEM_VIEW_TYPE_DATA : ITEM_VIEW_TYPE_SPACE;
    }

    // 获取类型数
    @Override
    public int getViewTypeCount() {
        return ITEM_VIEW_TYPE_COUNT;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        switch (getItemViewType(position)) {

        case ITEM_VIEW_TYPE_DATA:
            ViewHolder holder = null;
            // 是否复用
            if (convertView == null) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_view, parent, false);
                holder = new ViewHolder();
                holder.mImageView = (ImageView) convertView.findViewById(R.id.main_img);
                holder.mTextVieName = (TextView) convertView.findViewById(R.id.main_tv_name);
                holder.mTextDesc = (TextView) convertView.findViewById(R.id.main_tv_desc);
                // 设置tag
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            Student student = (Student) list.get(position);
            holder.mImageView.setImageResource(student.reId);
            holder.mTextVieName.setText(student.name);
            holder.mTextDesc.setText(student.desc);
            break;
        case ITEM_VIEW_TYPE_SPACE:
            if (convertView == null) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_view_space, parent, false);
            }
            break;

        default:
            break;
        }

        return convertView;
    }

    class ViewHolder {
        ImageView mImageView;
        TextView mTextVieName;
        TextView mTextDesc;
    }

}
package com.xspacing.listviewspace;

public class Student {

    public String name; //标题
    public int reId; //图片
    public String desc;//描述

    public Student(String name, String desc,int reId) {
        this.name = name;
        this.desc = desc;
        this.reId=reId;
    }
    public Student() {

    }

}
<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"
    tools:context="com.xspacing.listviewspace.MainActivity" >

    <com.xspacing.listviewspace.CustomListView
        android:id="@+id/main_list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.xspacing.listviewspace.CustomListView>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/item_list_view_space"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:background="#aaa"
    android:clickable="false"
    android:orientation="vertical" >

</LinearLayout>
<?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="80dp"
    android:layout_margin="10dp" 
    android:gravity="center_vertical">

    <ImageView
        android:id="@+id/main_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="5dp" >

        <TextView
            android:id="@+id/main_tv_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="第一个textview"
            android:textSize="17sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/main_tv_desc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="第二个textview" />
    </LinearLayout>

</LinearLayout>

效果图:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值