您的位置:首页 > 移动开发 > Android开发

模仿新浪微博随便看看栏目

2015-05-08 15:08 369 查看
在UI布局中,关于ListView组件的使用

模拟新浪微博的随便看看栏目

最终的运行效果图为:

Step1:定义一个实体类MyListView,作为ListView 适配器的适配类型

Step2:为ListView 的子项指定一个我们自定义的布局list_layout.xml

Step3:创建一个自定义的适配器ArticleAdapter,这个适配器继承自ArrayAdapter,重写构造方法和getView 方法

public View getView(int position, View convertView, ViewGroup parent) {

        ListItem listitem;

        if(convertView==null)

        {

            convertView=(LinearLayout)LayoutInflater.from(context).inflate(R.layout.list_layout, null);

            

            listitem=new ListItem();

            listitem.img=(ImageView)convertView.findViewById(R.id.head_img);

            listitem.name=(TextView)convertView.findViewById(R.id.name);

            listitem.time=(TextView)convertView.findViewById(R.id.time);

            listitem.rq=(TextView)convertView.findViewById(R.id.action_settings);

            listitem.article=(TextView)convertView.findViewById(R.id.article);

        

            convertView.setTag(listitem);

        }else {

            listitem=(ListItem)convertView.getTag();

        }

        

        listitem.img.setImageDrawable(list_mes.get(position).getImg());

        listitem.name.setText(list_mes.get(position).getName());

        listitem.time.setText(list_mes.get(position).getTime());

        listitem.rq.setText(list_mes.get(position).getRq());

        listitem.article.setText(list_mes.get(position).getArticel());

        return convertView;

    }

下面分别选取几个重要的代码:

1.MainActivity.java

package bzu.edu.cn;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Random;

import bzu.edu.cn.adapter.ArticleAdapter;

import bzu.edu.cn.adapter.Messages;

import bzu.edu.cn.view.MyListView;

import bzu.edu.hou.R;

import android.R.integer;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.app.Activity;

import android.content.res.TypedArray;

import android.view.Menu;

import android.view.Window;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.LinearLayout;

public class MainActivity extends Activity {

    

    private MyListView mylistview=null;

    private List<Messages> list_msg=null;

    private BaseAdapter adapter=null;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_main);

        

        init();

        if(list_msg==null){

            getData();

        }

        

        

        adapter=new ArticleAdapter(this,list_msg);

        

        mylistview.setOnRershListener(new OnRershListener());

        mylistview.setAdapter(adapter);

    }

        

    private void getData() {

        String names[];

        String article[];

        TypedArray img;

        int i;

        

        names=getResources().getStringArray(R.array.name);

        article=getResources().getStringArray(R.array.article);

        img=getResources().obtainTypedArray(R.array.head_photo);

        

        list_msg=new ArrayList<Messages>();

        for(i=0;i<names.length;i++){

            Messages message=new Messages();

            message.setImg(img.getDrawable(i));

            message.setName(names[i]);

            message.setArticel(article[i]);

            Date date=new Date();

            message.setTime(simple.format(date));

            list_msg.add(message);

        }

    }

    private void init() {

        // TODO Auto-generated method stub

        mylistview=(MyListView)findViewById(R.id.myListView1);

//        mylistview=new MyListView(this);

//        LinearLayout linear=(LinearLayout)MainActivity.this.findViewById(R.id.liner);

//        linear.addView(mylistview);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

    

    

    

    Handler handler=new Handler(new Handler.Callback() {

        @Override

        public boolean handleMessage(Message arg0) {

            // TODO Auto-generated method stub

            if(arg0.what==0){                

                //结束刷新

                mylistview.endOnRersh();

            }

            return false;

        }

    });

    

 

    class OnRershListener implements OnRersh{

        @Override

        public void OnRershListener() {

            new Thread(new Run()).start();

        }

    }

    class Run implements Runnable{

   

        public void run() {

            try {

                Thread.sleep(2000);

            } catch (Exception e) {

                e.printStackTrace();

            }

            handler.sendEmptyMessage(0);

        }

    }

}

2.布局文件  list_layout.xml

    运用布局的嵌套


<?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:padding="10dip"

    android:orientation="vertical" >

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        >

        <ImageView

            android:id="@+id/head_img"

            android:src="@drawable/p1"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_marginTop="5dip"

            android:layout_alignParentLeft="true"

            />

        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_toRightOf="@+id/head_img"

            android:layout_marginLeft="7dip"

            android:orientation="vertical">

            <RelativeLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_co
4000
ntent">

                <TextView

                    android:id="@+id/name"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_alignParentLeft="true"

                    android:textColor="#FF6666"

                    android:textSize="16sp"

                    android:typeface="sans"

                    android:textStyle="bold"

                    android:text="潇湘夜雨"/>

                <TextView

                    android:id="@+id/time"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_toRightOf="@id/name"

                    android:layout_alignBottom="@id/name"

                    android:layout_marginLeft="5dip"

                    android:textColor="#696969"

                    android:textSize="12sp"

                    android:text="12:11"/>

                

              

            </RelativeLayout>

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:layout_marginTop="5dip">

                <TextView

                    android:id="@+id/article"

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:minHeight="50px"

                    android:textSize="12sp"

                    android:text="这几天我学会了使用ListView组件。这个组件真的很有用。希望在今后的学习中能大量的用到。好好学习android开发。更多的精彩还在等着我们呢......"/>

            </LinearLayout>

        </LinearLayout>

    </RelativeLayout>

    

</LinearLayout>

图片效果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android listview