本章主要讲解在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);
最终效果: