关于 ListView 显示不同布局

来源:互联网 发布:网络磕炮文本 编辑:程序博客网 时间:2024/06/05 09:45
class DataAdapter extends BaseAdapter {
    private final int FIRST_TYPE = 0;
    private final int OTHERS_TYPE = 1;
    FirstViewHolder firstHolder = null;
    private ViewHolder holder = null;
    private Context context;

    public DataAdapter(Context context) {
        super();
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return FIRST_TYPE;
        } else {
            return OTHERS_TYPE;
        }
    }


    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 获取到当前位置所对应的Type
        int itemViewType = getItemViewType(position);
        View firstItemView = null;
        View othersItemView = null;
        switch (itemViewType) {
        case FIRST_TYPE:// 第一种样式
            firstItemView = convertView;
            if (firstItemView == null) {
                firstItemView = View.inflate(context, R.layout.item_one, null);
                firstHolder = new FirstViewHolder();
                firstHolder.tv_content = (TextView) firstItemView
                        .findViewById(R.id.tv_content);
                firstItemView.setTag(firstHolder);
            } else {
                firstHolder = (FirstViewHolder) firstItemView.getTag();
            }
            firstHolder.tv_content.setText("iten_one");
            convertView = firstItemView;
            break;
        case OTHERS_TYPE:// 第二种样式
            othersItemView = convertView;
            if (othersItemView == null) {
                othersItemView = View.inflate(context, R.layout.item_two, null);
                holder = new ViewHolder();
                holder.iv_image = (ImageView) othersItemView
                        .findViewById(R.id.iv_image);
                othersItemView.setTag(holder);
            } else {
                holder = (ViewHolder) othersItemView.getTag();
            }
            holder.iv_image.setImageResource(R.drawable.ic_launcher);
            position--;
            convertView = othersItemView;
            break;
        }

        return convertView;
    }

}

class ViewHolder {
    ImageView iv_image;
}

class FirstViewHolder {
    TextView tv_content;

}


}

布局:

item_one

<?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:id="@+id/tv_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello"
    android:textColor="#AAFFBB"
    />
    
</LinearLayout>
item_two

<?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" >

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

</LinearLayout>



0 0
原创粉丝点击