Android ListView嵌套GridView(同理嵌套ListView)類似QQ說說條目加點贊顯示名稱效果

Android ListView嵌套GridView和ListView嵌套ListView

先上要的效果圖

ListVIew嵌套Gridview

好了,思想+代碼。

MainActivity代碼:

public class ListViewNestActivity extends Activity {
    private List<NowUpdateParentEntity> list=new ArrayList<>();
    List<NowUpdateChildEntity> updateChildEntityList=new ArrayList<>();
    private MyListView myListView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.include_story_hall_now_update);
        findView();
        initView();
    }

    private void findView() {
        myListView= (MyListView) findViewById(R.id.now_update_main_listView);
    }

    private void initView() {
        addNum();
        NowUpdateAdapter nowUpdateParentAdapter=new NowUpdateAdapter(ListViewNestActivity.this,list,updateChildEntityList);
        myListView.setAdapter(nowUpdateParentAdapter);
    }

    private List<NowUpdateParentEntity> addNum(){
        NowUpdateParentEntity entity=new NowUpdateParentEntity();
        NowUpdateChildEntity childEntity=new NowUpdateChildEntity();
        entity.setIcon(R.mipmap.user_icon);
        entity.setName("admin");
        entity.setTime("2016-12-31");
        entity.setImage(R.mipmap.one);
        entity.setTitle("test");
        entity.setTodayNum("14255");
        entity.setContent("hfkahklahflahflaj");
        entity.setForm("test");
        entity.setClassify("test");
        entity.setTextNum("358萬字");
        childEntity.setImage(R.mipmap.user_icon);
        updateChildEntityList.add(childEntity);
        list.add(entity);
        return list;
    }
}

Layout代碼:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <com.aierjun.woxiangwoxiang.widget.MyListView
            android:id="@+id/now_update_main_listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </com.aierjun.woxiangwoxiang.widget.MyListView>
    </LinearLayout>
</ScrollView>

NowUpdateAdapter代碼:

public class NowUpdateAdapter extends BaseAdapter {
    private Context context;
    private List<NowUpdateParentEntity> updateParentEntityList;
    private List<NowUpdateChildEntity> updateChildEntityList;
    public NowUpdateAdapter(Context context, List<NowUpdateParentEntity> updateParentEntityList,List<NowUpdateChildEntity> updateChildEntityList) {
        this.context=context;
        this.updateParentEntityList=updateParentEntityList;
        this.updateChildEntityList=updateChildEntityList;
    }

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

    @Override
    public Object getItem(int i) {
        return updateParentEntityList.get(i);
    }

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

    @Override
    public View getView(int i, View canverView, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        if (canverView==null){
            viewHolder=new ViewHolder();
            canverView=View.inflate(context, R.layout.now_update_main_listview_item,null);
            viewHolder.icon= (ImageView) canverView.findViewById(R.id.user_icon_main_story);
            viewHolder.name= (TextView) canverView.findViewById(R.id.name_main_story);
            viewHolder.time= (TextView) canverView.findViewById(R.id.time_main_story);
            viewHolder.image= (ImageView) canverView.findViewById(R.id.image_main_story);
            viewHolder.title= (TextView) canverView.findViewById(R.id.title_main_story);
            viewHolder.content= (TextView) canverView.findViewById(R.id.content_main_story);
            viewHolder.form= (TextView) canverView.findViewById(R.id.form_main_story);
            viewHolder.classify= (TextView) canverView.findViewById(R.id.calssify_main_story);
            viewHolder.textNum= (TextView) canverView.findViewById(R.id.text_num_main_story);
            viewHolder.todayNum= (TextView) canverView.findViewById(R.id.today_num_main_story);
            viewHolder.gridView= (GridView) canverView.findViewById(R.id.gridview_collect_icon);
            canverView.setTag(viewHolder);
        }else{
            viewHolder= (ViewHolder) canverView.getTag();
        }
        NowUpdateParentEntity entity= (NowUpdateParentEntity) getItem(i);
        viewHolder.icon.setImageResource(entity.getIcon());
        viewHolder.name.setText(entity.getName());
        viewHolder.time.setText(entity.getTime());
        viewHolder.image.setImageResource(entity.getImage());
        viewHolder.title.setText(entity.getTitle());
        viewHolder.todayNum.setText(entity.getTodayNum());
        viewHolder.content.setText(entity.getContent());
        viewHolder.form.setText(entity.getForm());
        viewHolder.classify.setText(entity.getClassify());
        viewHolder.textNum.setText(entity.getTextNum());
        viewHolder.gridView.setAdapter(new NowUpdateChildAdapter(context,updateChildEntityList));
        return canverView;
    }
    class ViewHolder{
        ImageView icon;  //頭像
        TextView name; //暱稱
        TextView time;//時間
        ImageView image;//圖片
        TextView title; //文字標題
        TextView todayNum;
        TextView content; //內容
        TextView form; //來源
        TextView classify; //類型
        TextView textNum;//字數
        ImageView collectionImage;//收藏圖片
        TextView collectionshNum;//輸出數
        TextView commentNum;//評論數
        GridView gridView;
    }
}

注意:這是最外層的大的adapter

Entity代碼:

public class NowUpdateParentEntity {
    private int icon;  //頭像
    private String name; //暱稱
    private String time;//時間
    private int image;//圖片
    private String title; //文字標題
    private String todayNum; //今日指數
    private String content; //內容
    private String form; //來源
    private String classify; //類型
    private String textNum;//字數
    private int collectionImage;//收藏圖片
    private String collectionshNum;//輸出數
    private String commentNum;//評論數

    public NowUpdateParentEntity() {
    }

    public NowUpdateParentEntity(String classify, int collectionImage, String collectionshNum, String commentNum, String content, String form, int icon, int image, String name, String textNum, String time, String title, String todayNum) {
        this.classify = classify;
        this.collectionImage = collectionImage;
        this.collectionshNum = collectionshNum;
        this.commentNum = commentNum;
        this.content = content;
        this.form = form;
        this.icon = icon;
        this.image = image;
        this.name = name;
        this.textNum = textNum;
        this.time = time;
        this.title = title;
        this.todayNum = todayNum;
    }

    public String getClassify() {
        return classify;
    }

    public void setClassify(String classify) {
        this.classify = classify;
    }

    public int getCollectionImage() {
        return collectionImage;
    }

    public void setCollectionImage(int collectionImage) {
        this.collectionImage = collectionImage;
    }

    public String getCollectionshNum() {
        return collectionshNum;
    }

    public void setCollectionshNum(String collectionshNum) {
        this.collectionshNum = collectionshNum;
    }

    public String getCommentNum() {
        return commentNum;
    }

    public void setCommentNum(String commentNum) {
        this.commentNum = commentNum;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getForm() {
        return form;
    }

    public void setForm(String form) {
        this.form = form;
    }

    public int getIcon() {
        return icon;
    }

    public void setIcon(int icon) {
        this.icon = icon;
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTextNum() {
        return textNum;
    }

    public void setTextNum(String textNum) {
        this.textNum = textNum;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTodayNum() {
        return todayNum;
    }

    public void setTodayNum(String todayNum) {
        this.todayNum = todayNum;
    }

    @Override
    public String toString() {
        return "NowUpdateParentEntity{" +
                "classify='" + classify + '\'' +
                ", icon=" + icon +
                ", name='" + name + '\'' +
                ", time='" + time + '\'' +
                ", image=" + image +
                ", title='" + title + '\'' +
                ", todayNum='" + todayNum + '\'' +
                ", content='" + content + '\'' +
                ", form='" + form + '\'' +
                ", textNum='" + textNum + '\'' +
                ", collectionImage=" + collectionImage +
                ", collectionshNum='" + collectionshNum + '\'' +
                ", commentNum='" + commentNum + '\'' +
                '}';
    }
}

NowUpdateChildAdapter代碼:

public class NowUpdateChildAdapter extends BaseAdapter {
    private Context context;
    private List<NowUpdateChildEntity> list;
    public NowUpdateChildAdapter(Context context, List<NowUpdateChildEntity> list) {
        this.context=context;
        this.list=list;
    }

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

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

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

    @Override
    public View getView(int i, View canerView, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        if (canerView==null){
            viewHolder=new ViewHolder();
            canerView=View.inflate(context, R.layout.imageview_item,null);
            viewHolder.icon= (ImageView) canerView.findViewById(R.id.image_gridview);
            canerView.setTag(viewHolder);
        }else{
            viewHolder= (ViewHolder) canerView.getTag();
        }
        NowUpdateChildEntity entity= (NowUpdateChildEntity) getItem(i);
        viewHolder.icon.setImageResource(entity.getImage());
        return canerView;
    }
    class ViewHolder{
        ImageView icon;
    }
}

注意:這裏的adapter是嵌套的gridview的adapter

Entity代碼:

public class NowUpdateChildEntity {
    private int image;

    public NowUpdateChildEntity() {
    }

    public NowUpdateChildEntity(int image) {
        this.image = image;
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }

    @Override
    public String toString() {
        return "NowUpdateChildEntity{" +
                "image=" + image +
                '}';
    }
}

注意:這裏的entity是嵌套的gridview的entity

item的layout代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="25dp">
        <ImageView
            android:id="@+id/user_icon_main_story"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@mipmap/user_icon"/>
        <RelativeLayout
            android:id="@+id/main_title"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_toRightOf="@id/user_icon_main_story"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginBottom="10dp">
            <TextView
                android:id="@+id/name_main_story"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="張三"
                android:textSize="23sp"
                android:textColor="@color/black" />
            <TextView
                android:id="@+id/time_main_story"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="2016-11-10"
                android:layout_below="@id/name_main_story"/>
        </RelativeLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="140dp"
            android:layout_below="@id/main_title">
            <ImageView
                android:id="@+id/image_main_story"
                android:layout_width="100dp"
                android:layout_height="140dp"
                android:src="@mipmap/one"
                android:scaleType="centerCrop"/>
            <RelativeLayout
                android:id="@+id/title_main_big_story"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_toRightOf="@id/image_main_story">
                <TextView
                    android:id="@+id/title_main_story"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:text="造物集自傳"
                    android:textSize="20sp"
                    android:textColor="@color/black"
                    android:layout_marginLeft="10dp"/>
                <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/today_num_main_story"
                        android:layout_width="wrap_content"
                        android:layout_height="30dp"
                        android:text="1425"
                        android:textSize="13sp"
                        android:textColor="@color/black"
                        android:layout_marginLeft="10dp"
                        android:layout_alignParentRight="true"
                        android:gravity="center_vertical"/>
                    <TextView
                        android:id="@+id/title_num_text_main_story"
                        android:layout_width="wrap_content"
                        android:layout_height="30dp"
                        android:text="今日指數:"
                        android:textSize="13sp"
                        android:textColor="@color/black"
                        android:layout_toLeftOf="@id/today_num_main_story"
                        android:gravity="center_vertical"/>
                </RelativeLayout>
            </RelativeLayout>
            <TextView
                android:id="@+id/content_main_story"
                android:layout_width="match_parent"
                android:layout_height="85dp"
                android:text="造物集自傳dddddddsadfa阿發發ddddd大道大道啊dad哇低窪大 大道打我阿迪王昂達dddd"
                android:textSize="18sp"
                android:textColor="@color/black_gray"
                android:maxLines="3"
                android:ellipsize="end"
                android:layout_toRightOf="@id/image_main_story"
                android:layout_below="@id/title_main_big_story"
                android:paddingBottom="10dp"
                android:layout_marginLeft="10dp"/>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/image_main_story"
                android:layout_below="@id/content_main_story"
                android:layout_marginLeft="10dp">
                <TextView
                    android:id="@+id/form_main_story"
                    android:layout_width="wrap_content"
                    android:layout_height="25dp"
                    android:text="#造物集自傳"
                    android:textSize="15sp"
                    android:textColor="@color/blue" />
                <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true">
                    <TextView
                        android:id="@+id/calssify_main_story"
                        android:layout_width="wrap_content"
                        android:layout_height="20dp"
                        android:text="連載"
                        android:textSize="11sp"
                        android:textColor="@color/gray"
                        android:layout_marginLeft="15dp"
                        android:layout_marginRight="15dp"
                        android:background="@drawable/gray_btn_bg"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:gravity="center"/>
                    <TextView
                        android:id="@+id/text_num_main_story"
                        android:layout_width="wrap_content"
                        android:layout_height="20dp"
                        android:text="39萬字"
                        android:textSize="11sp"
                        android:textColor="@color/gray"
                        android:layout_toRightOf="@id/calssify_main_story"
                        android:background="@drawable/gray_btn_bg"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:gravity="center"/>
                </RelativeLayout>
            </RelativeLayout>
        </RelativeLayout>
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <RelativeLayout
            android:id="@+id/collect_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:layout_marginTop="10dp">
            <ImageView
                android:id="@+id/collect_image_main_story"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:src="@mipmap/user_icon"/>
            <TextView
                android:id="@+id/collect_num_main_story"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/collect_image_main_story"
                android:text="22"
                android:layout_marginLeft="10dp"
                android:gravity="center_vertical"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/collect_num_main_story"
                android:text="個收藏"
                android:layout_marginLeft="2dp"
                android:gravity="center_vertical"/>
        </RelativeLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/collect_left"
            android:layout_marginLeft="25dp"
            android:orientation="horizontal">
            <com.aierjun.woxiangwoxiang.widget.MyGridView
                android:id="@+id/gridview_collect_icon"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:numColumns="6"
               android:layout_marginLeft="10dp"/>
        </LinearLayout>
    </RelativeLayout>
</LinearLayout>

GridView item的layout代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/image_gridview"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:src="@mipmap/user_icon"/>
</LinearLayout>

好了,說下思路。

簡單的說就是嵌套,在list裏面的adapter裏面,找到gridview,然後setAdapter,然後一樣的填充就好。在list的adapter裏注意傳參數給gridview的adapter就好。

上面的數據都是死的,可以自己修改添加,也可以網絡獲取後添加,上面的代碼可以直接複製使用,能夠跑起來,希望對你們有幫助。覺得有用的記得頂一下。


注意:本文爲我原創,自己一行行寫的,請尊重勞動成果,轉載請註明出處和連接,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章