18.Listview结合SimplterAdapter最全面的使用

本章主要讲解在listview中适配中用户想要的布局,通过simpleAdpter实现

第一步:编写你要适配到listview中的布局

<?xml version="1.0" encoding="utf-8"?>
<!--发表动态评论转发页面
通过Adapter,data将这个模板展示在listview中-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/blue">
    <!--用户头像-->
    <ImageView
        android:id="@+id/user_head"
        android:layout_width="70sp"
        android:layout_height="70sp"
        android:src="@drawable/usericon"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"/>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

    <!--右边框架,用户姓名和用户是否通过认证的图标-->
    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginLeft="10dp">
        <TextView
            android:id="@+id/uer_name"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/app_name"
            android:textSize="20dp"
            android:layout_marginTop="10dp"
            android:textColor="@color/black"
            />
        <ImageView
            android:id="@+id/auto_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/v"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="6dp"/>

        <!--相对布局,用户发布时间-->
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="15dp"
            >
            <TextView
                android:id="@+id/time_put"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="@string/app_name"
                android:layout_alignParentRight="true"

                />
        </RelativeLayout>
    </LinearLayout>
        <!--用户发布的消息-->
        <TextView
            android:id="@+id/user_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/content"
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"/>
        <ImageView
            android:id="@+id/user_head_one"
            android:layout_width="55sp"
            android:layout_height="55sp"
            android:src ="@drawable/usericon"
            android:layout_marginTop="5dp"/>

        <!-- 微博对话内容,这里运用到了xxx.9图片,可以拉伸,效果好 -->
        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:background="@drawable/popup">
            <TextView
                android:id="@+id/user_content_one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/content"
                android:layout_marginTop="10dp"
                android:layout_marginRight="10dp"/>
            <ImageView
                android:id="@+id/user_head_two"
                android:layout_width="55sp"
                android:layout_height="55sp"
                android:src ="@drawable/usericon"
                android:layout_marginTop="5dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginTop="10dp"
            android:orientation="horizontal"
            android:weightSum="1">
            <!--用户姓名-->
            <TextView
                android:id="@+id/textView_src"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="来自:Touch Android"
                android:textSize="12dp"
                android:textColor="@color/hui"

            />
            <!--用户评论次数和转发的次数对于
             LinearLayout:
当 android:orientation="vertical"  时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

当 android:orientation="horizontal" 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
android:drawableLeft=“”在textview中设置图片在文字左边-->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="right">
            <TextView
                android:id="@+id/text_view_comment"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_gravity="right"
                android:text="10"
                android:textSize="12dp"
                android:drawableLeft="@drawable/redirect_icon"
                 />
                <TextView android:id="@+id/text_view_forword"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:drawableLeft="@drawable/comment_icon"
                    android:text="100"
                    android:textSize="12dp"
                    />
            </LinearLayout>
            </LinearLayout>
        </LinearLayout>
</LinearLayout>

第二部:编写JAVAbean用于存储ListView中用到的控件对象

package Bean;

import java.util.List;

/**用于显示listview中的数据
 * Created by Administrator on 2016/9/4.
 */
public class HomeMsgBean {
    public  String name;       //文字对象
    public  String content;
    public  String content_child;
    public int head;       //图片对象
    public int commont;
    public int commont_head;

    public int getCommont_head() {
        return commont_head;
    }

    public void setCommont_head(int commont_head) {
        this.commont_head = commont_head;
    }

    public int getCommont() {
        return commont;
    }

    public void setCommont(int commont) {
        this.commont = commont;
    }

    public int getHead() {
        return head;
    }

    public void setHead(int head) {
        this.head = head;
    }

    public HomeMsgBean(String name, String content, String content_child,int head,int commont,int commont_head) {
        this.name = name;
        this.content = content;
        this.content_child = content_child;
        this.head=head;
        this.commont=commont;
        this.commont_head=commont_head;
    }

    public void setContent_child(String content_child) {
        this.content_child = content_child;
    }

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

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

    public String getContent_child() {
        return content_child;
    }

    public String getContent() {
        return content;
    }

    public String getName() {
        return name;
    }






}


第三部:编写adapter页面


/**用于
 * Created by Administrator on 2016/9/4.
 *十八章的重点:将超链接转换成不是超链接的数据,并且解析,得到你想要的数据
 * holder.txt_wb_item_from.setMovementMethod(LinkMovementMethod.getInstance());
 * holder.txt_wb_item_from.setText("来着:"+Html.fromHtml(s.getSource()));
 */
package Adapter;

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;

import java.util.List;

import Bean.HomeMsgBean;
import app.coolweather.com.weibo.R;

public class HomeMsgAdapter extends BaseAdapter {
    private Context context;

    private List<HomeMsgBean> list;

    public HomeMsgAdapter(Context context,List<HomeMsgBean> list){
        this.context=context;
        this.list=list;

    }
    @Override
    public int getCount() {
        return list==null?0:list.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if(view==null){
            Holder holder=new Holder();
            view = LayoutInflater.from(context).inflate(R.layout.msg_write_layout, null);//加载布局文件,该布局文件为listview中的文件,返回v对象,即自己的模板文件
            //创建对象
            holder.user_content_textView= (TextView) view.findViewById(R.id.user_content);
            holder.user_head= (ImageView) view.findViewById(R.id.user_head);
            holder.commont_head=(ImageView)view.findViewById(R.id.user_head_one);
            holder.user_time=(TextView)view.findViewById(R.id.time_put);
            holder.commont_child=(TextView)view.findViewById(R.id.user_content_one);
            holder.commont_head_two=(ImageView)view.findViewById(R.id.user_head_two);
            //给各个对象赋值
            holder.user_content_textView.setText(list.get(position).getName());
            holder.user_head.setImageResource(list.get(position).getHead());    //setImageResource()中间填写R.drawable.picture
            holder.commont_head.setImageResource(list.get(position).getCommont());
            holder.user_time.setText(list.get(position).getContent());
            holder.commont_child.setText(list.get(position).getContent_child());
            holder.commont_head_two.setImageResource(list.get(position).getCommont_head());   //setImageResource()中间填写R.drawable.picture

        }
        return view;
    }
    //静态类用于声明各个控件的对象,实现性能的优化
    private static class Holder{
        TextView user_content_textView;
        ImageView user_head;
        ImageView commont_head;
        TextView user_time;
        TextView commont_child;
        ImageView commont_head_two;
    }
}

第四部:

1.创建Adapter中使用的list对象,创建lisview对象

private List<HomeMsgBean> list=new ArrayList<HomeMsgBean>();
listView= (ListView) findViewById(R.id.list_view_home);

2.给adapter赋值

public void initAdapter(){
    HomeMsgBean homeMsgBean_1=new HomeMsgBean("壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下","9月1日","青青园中葵,朝露待日晞",R.drawable.time,R.drawable.time_1,R.drawable.time_3);
    list.add(homeMsgBean_1);
    HomeMsgBean homeMsgBean_2=new HomeMsgBean("清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章","9月2日","阳春布德泽,万物生光辉",R.drawable.time,R.drawable.time_2,R.drawable.time_4);
    list.add(homeMsgBean_2);
    HomeMsgBean homeMsgBean_3=new HomeMsgBean("少焉,月出于东山之上,徘徊于斗牛之间","9月3日","常恐秋节至,焜黄华叶衰",R.drawable.time,R.drawable.time_3,R.drawable.time_2);
    list.add(homeMsgBean_3);
    HomeMsgBean homeMsgBean_4=new HomeMsgBean("白露横江,水光接天。纵一苇之所如,凌万顷之茫然","9月4日","常恐秋节至,焜黄华叶衰",R.drawable.time,R.drawable.time_4,R.drawable.time_1);
    list.add(homeMsgBean_4);


}

3.加载适配器

@Override
public void refresh(Object... params) {

    progressView.setVisibility(View.GONE);           //因为这里是整个控件包括progress和text所以用setVisibility,GONE为影藏,V为可见,INV为不可见
    //加载适配器和Adapter
    HomeMsgAdapter homeMsgAdapter=new HomeMsgAdapter(this,list);
    listView.setAdapter(homeMsgAdapter);






最终效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值