关于UI布局中,listView控件的使用:(该篇的功能是实现简单的微博随便看看)
1:创建数据源
2:创建适配器
3:建立Adapter和数据的关联,建立AdapterView和Adapter之间的关联。
下面分别摘取几个比较重要的代码:
MainActivity.java:
1 import java.text.SimpleDateFormat; 2 import java.util.ArrayList; 3 import java.util.Date; 4 import java.util.List; 5 import java.util.Random;//导入Random,方便下面对访问人气的随机数生成 6 7 import bzu.edu.hou.adapter.ArticleAdapter; 8 import bzu.edu.hou.adapter.Messages; 9 import bzu.edu.hou.view.MyListView; 10 import android.R.integer; 11 import android.os.Bundle; 12 import android.os.Handler; 13 import android.os.Message; 14 15 16 import android.app.Activity; 17 import android.content.res.TypedArray; 18 import android.view.Menu; 19 import android.view.Window; 20 import android.widget.ArrayAdapter; 21 import android.widget.BaseAdapter; 22 import android.widget.LinearLayout; 23 24 public class MainActivity extends Activity { 25 26 private MyListView mylistview=null; 27 private Listlist_msg= null ; 28 private BaseAdapter adapter= null ; 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 requestWindowFeature(Window.FEATURE_NO_TITLE); 33 setContentView(R.layout.activity_main); 34 35 init(); 36 if(list_msg== null ){//判断是否为空 37 getData(); 38 } 39 40 41 adapter= new ArticleAdapter( this ,list_msg); 42 43 44 mylistview.setAdapter(adapter); 45 } 46 47 48 49 private void getData() { 50 51 // 获得xml的资源 52 String names[]; 53 String article[]; 54 TypedArray img; 55 int i; 56 57 names= getResources().getStringArray(R.array.name); 58 article= getResources().getStringArray(R.array.article); 59 img= getResources().obtainTypedArray(R.array.head_photo); 60 61 list_msg= new ArrayList (); 62 for(i= 0;i ){ 63 Messages message= new Messages(); 64 message.setImg(img.getDrawable(i)); 65 message.setName(names[i]); 66 message.setArticel(article[i]); 67 message.setRq( " 人气: "+String.valueOf( new Random().nextInt( 1000 ))); 68 Date date= new Date(); 69 SimpleDateFormat simple= new SimpleDateFormat( " MM-dd " );//格式化生成的时间 70 message.setTime(simple.format(date)); 71 list_msg.add(message); 72 } 73 } 74 private void init() { 75 76 mylistview= (MyListView)findViewById(R.id.myListView1); 77 78 } 79 }
2:适配器:
1 import java.util.List; 2 import android.content.Context; 3 import android.view.LayoutInflater; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.ImageView; 8 import android.widget.LinearLayout; 9 import android.widget.TextView; 10 /××如果AiticleAdapter继承的是ArrayAdapter就只需要重写getView()方法,如果继承的是BaseAdapter就需要重写getCount(),getItem()等方法。××/ 11 public class ArticleAdapter extends BaseAdapter 12 { 13 private Listlist_mes = null ; 14 private Context context; 15 16 public ArticleAdapter(Context context, List list_mes) 17 { 18 this.list_mes = list_mes; 19 this.context = context; 20 } 21 22 @Override 23 public int getCount() 24 { 25 // TODO Auto-generated method stub 26 return list_mes.size(); 27 } 28 29 @Override 30 public Object getItem( int position) 31 { 32 return list_mes. get (position); 33 } 34 35 @Override 36 public long getItemId( int position) 37 { 38 return position; 39 } 40 41 @Override 42 public View getView( int position, View convertView, ViewGroup parent) 43 { 44 ListItem listitem; 45 if (convertView == null )//此处加上对convertView的判断操作 46 { 47 convertView = (LinearLayout) LayoutInflater. from(context).inflate(R.layout.list_layout, null );//将后面需要显示的数据进行压入布局中。 48 49 listitem = new ListItem(); 50 listitem.img = (ImageView) convertView.findViewById(R.id.head_img); 51 listitem.name = (TextView) convertView.findViewById(R.id.name); 52 listitem.time = (TextView) convertView.findViewById(R.id.time);//注意:此处查找组件不同于以前的查找组件。 53 listitem.rq = (TextView) convertView.findViewById(R.id.rq); 54 listitem.article = (TextView) convertView.findViewById(R.id.article); 55 56 convertView.setTag(listitem); 57 } else 58 { 59 listitem = (ListItem) convertView.getTag(); 60 } 61 62 listitem.img.setImageDrawable(list_mes. get (position).getImg()); 63 listitem.name.setText(list_mes. get (position).getName()); 64 listitem.time.setText(list_mes. get (position).getTime()); 65 listitem.rq.setText(list_mes. get (position).getRq()); 66 listitem.article.setText(list_mes. get (position).getArticel()); 67 return convertView; 68 } 69 70 public class ListItem 71 { 72 ImageView img; 73 TextView name; 74 TextView time; 75 TextView rq; 76 TextView article; 77 } 78 }
3:布局文件:
在显示布局中,无非是实现布局的嵌套。如:list_layout.xml:在该布局中,使用线性布局,相对布局,ImageView等层层嵌套达到预期的效果。在布局嵌套中,应该明确布局间的关系。(但:下面代码有个不足之处:对于text文本的引用,应该尽量在string.xml中进行引用,下面采用了硬编码方式,不值得提倡。)
1 "1.0" encoding="utf-8"?> 2" http://schemas.android.com/apk/res/android " 3 android:layout_width= " match_parent " 4 android:layout_height= " match_parent " 5 android:padding= " 10dip " 6 android:orientation= " vertical " > 7 < RelativeLayout 8 android:layout_width= " match_parent " 9 android:layout_height= " wrap_content " 10 > 11 < ImageView 12 android:id= " @+id/head_img " 13 android:src= " @drawable/p1 " 14 android:layout_width= " wrap_content " 15 android:layout_height= " wrap_content " 16 android:layout_marginTop= " 5dip " 17 android:layout_alignParentLeft= " true " 18 /> 19 < LinearLayout 20 android:layout_width= " match_parent " 21 android:layout_height= " wrap_content " 22 android:layout_toRightOf= " @+id/head_img " 23 android:layout_marginLeft= " 7dip " 24 android:orientation= " vertical "> 25 < RelativeLayout 26 android:layout_width= " match_parent " 27 android:layout_height= " wrap_content "> 28 < TextView 29 android:id= " @+id/name " 30 android:layout_width= " wrap_content " 31 android:layout_height= " wrap_content " 32 android:layout_alignParentLeft= " true " 33 android:textColor= " #FF6666 " 34 android:textSize= " 16sp " 35 android:typeface= " sans " 36 android:textStyle= " bold " 37 android:text= " 星星 "/> 38 < TextView 39 android:id= " @+id/time " 40 android:layout_width= " wrap_content " 41 android:layout_height= " wrap_content " 42 android:layout_toRightOf= " @id/name " 43 android:layout_alignBottom= " @id/name " 44 android:layout_marginLeft= " 5dip " 45 android:textColor= " # " 46 android:textSize= " 12sp " 47 android:text= " 12:11 "/> 48 49 < TextView 50 android:id= " @+id/rq " 51 android:layout_width= " wrap_content " 52 android:layout_height= " wrap_content " 53 android:layout_alignParentRight= " true " 54 android:layout_centerVertical= " true " 55 android:textSize= " 9sp " 56 android:text= " 123 "/> 57 58 < LinearLayout 59 android:layout_width= " match_parent " 60 android:layout_height= " wrap_content " 61 android:layout_marginTop= " 5dip "> 62 < TextView 63 android:id= " @+id/article " 64 android:layout_width= " match_parent " 65 android:layout_height= " wrap_content " 66 android:minHeight= " 50px " 67 android:textSize= " 12sp " 68 android:text= " 种不同的1 "/> 69 70 71 72
该程序实现的效果如下所示:

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222088.html原文链接:https://javaforall.net
