Android学习之模仿新浪微博随便看看栏目

小编目前仍在Android学习中,本次模仿新浪微博随便看看栏目运行效果如下:

过程分析:

完成该项目大概可以分为三部分:  布局设计,自定义适配器 和 为适配器添加数据;

1.布局设计中,小编在mainactivity.xml文件中定义了一个ListView控件,并单独设定了一个数据项的布局list_cell,

数据项代码如下:

<?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:orientation="horizontal"
    android:background="#EEEEEE">

    <ImageView
        android:id="@+id/ivIcon"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_margin="3dp"
        android:contentDescription="@string/iv_des"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp">

        <TextView
            android:id="@+id/tvName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="7dp"
            android:text="@string/tv_name"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/tvTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/tvContent"
            android:layout_alignParentRight="true"
            android:layout_marginRight="20dp"
            android:text="@string/tv_time"
            android:textAppearance="?android:attr/textAppearanceSmall" />

         <TextView
            android:id="@+id/tvContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="10dp"
            android:layout_below="@id/tvName"

            android:text="" />
    </RelativeLayout>

</LinearLayout>

mainactivity.xml主要页码如下:

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/tv_title" />

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp">
    </ListView>

2.自定义的适配器:在自定义适配器时,小编是通过继承BaseAdapter来实现的,主要代码如下:

private List<ListCell> list;
    private Context context;

    public MyAdapter(Context context, List<ListCell> list) {
        this.context = context;
        this.list = list;
    }
public View getView(int arg0, View arg1, ViewGroup arg2) {

        if (arg1 == null) {
            arg1 = LayoutInflater.from(context).inflate(R.layout.list_cell,null);
        }

        ListCell lc = list.get(arg0);

        ImageView iconId = (ImageView) arg1.findViewById(R.id.ivIcon);
        TextView tvName = (TextView) arg1.findViewById(R.id.tvName);
        TextView tvTime = (TextView) arg1.findViewById(R.id.tvTime);
        TextView tvContent = (TextView) arg1.findViewById(R.id.tvContent);

        iconId.setBackgroundResource(lc.getIconId());
        tvName.setText(lc.getTvName());
        tvTime.setText(lc.getTvTime());
        tvContent.setText(lc.getTvContent());

        return arg1;
    }

在此处构造方法中传递的2个参数,Context用来传递上下文,List则用来接收数据源,其中list<ListCell>中的实体类对应的是list_cell的实体类,此处不再详述

3.在MainActivity中进行最后的配置与测试:

package cn.edu.bzu.sinalook;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class MainActivity extends Activity {

    private MyAdapter adapter;
    private ListView lv;
    private List<ListCell> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lv);

//        adapter=new MyAdapter(MainActivity.this,list);/*此处必须放置在list数据之下,否则会报空指针异常,原因是此时的list为空*/

        list = new ArrayList<ListCell>();
        //测试数据
        list.add(new ListCell(R.drawable.stage_0, "小红", "1分钟前", "我喜欢石头的懂事 kimi的害羞可爱 森蝶的细心照顾他人 天天的独当一面 诗龄的天马行空 童年真好!"));
        list.add(new ListCell(R.drawable.stage_1, "小橙", "19分钟前", "一百斤的石头我可能提不起来,但是 如果是一百斤人名币,我保证拎起来就跑。"));
        list.add(new ListCell(R.drawable.stage_2, "小黄", "21分钟前", "在别人面前评论我的是是非非好与不好跟你有何关系你为何缠我不放莫非你缺狗粮"));
        list.add(new ListCell(R.drawable.stage_3, "小绿", "33分钟前", "有多少人不想过11.11这个节日,又有多少人是在11.11找到了自己的神!"));
        list.add(new ListCell(R.drawable.stage_4, "小青", "43分钟前", "记得小时候,我爷爷写字非常漂亮,写了好多本毛笔字。学校里的老师没有一个比得上。现在连笔都拿不稳了"));
        list.add(new ListCell(R.drawable.stage_5, "小蓝", "58分钟前", "[别潇洒了自己苦了父母 ]"));
        list.add(new ListCell(R.drawable.stage_6, "小紫", "1小时前", "    渐渐知道了,很多东西可遇而不可求,不属于自己的,何必拼了命去在乎。"));
        list.add(new ListCell(R.drawable.stage_7, "小黑", "1小时前", "    曾几何时对你说过要陪你到海枯石烂,可是到了最后你我还是成为了最熟悉的陌生人! ----MC小凡"));
        list.add(new ListCell(R.drawable.stage_4, "小白", "2小时前", "    其实最喜欢你的内个人是一直陪伴你的人,不是开心的时候就找你,不开心的时候就把你抛弃在一边!---MC小凡"));

        adapter=new MyAdapter(MainActivity.this,list);

        lv.setAdapter(adapter);
    }

}

到了这里,一个模仿新浪微博随便看看的项目就完成了~~~

时间: 2024-10-10 03:35:44

Android学习之模仿新浪微博随便看看栏目的相关文章

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

使用ListView来模仿微博随便看看栏 [分析] 要完成这个效果,我们需要: 1.ListView及ListView_Item 2.实体类的编写 3.自定义适配器的书写 4.ListView的绑定数据源与控件 [编码] package cn.edu.bzu.adapter; import java.util.List; import cn.edu.bzu.entity.Information;import cn.edu.bzu.weibo.R;import android.content.Co

Android学习路线(二十四)ActionBar Fragment运用最佳实践

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法.俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流. 了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的.具体如何添加我就不再赘述

Android学习--写一个发送短信的apk,注意布局文件的处理过程!!!

刚开始写Android程序如图发现使用了findViewById方法之后输出的话居然是null(空指针错误),也就是说这个方法没有成功.网上说这样写是在activity_main .xml去找这个ID所代表的控件,而现在使用的ADT在layout下除了activity_main .xml还多生成了一个fragment_main.xml.我就是把控件写在了后一个布局文件中.想请问下,使用什么样的方法是在fragment_main.xml去寻找控件呢? 回答:在PlaceHolderFragment

Android学习总结之WIN上搭建环境

引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld.本文的主题如下: 1.环境搭建 1.1.JDK安装 1.2.Eclipse安装 1.3.Android SDK安装 1.4.ADT安装 1.5.创建AVD 2.HelloWorld 1.环境搭建 1.1.JDK安装

2015年Android学习视频完美合集

[2015年Android视频完美合集] [Stay教你变Android大神]框架合辑 [毕设项目]android电子市场 商城购物(iGou)App开发教程 菜鸟窝-新浪客户端 [IT客学院]神一样的模仿[2]–高仿拉手网,项目经验从这里起航(1) Android SlidingMenu菜单栏程序设计开发 Android(安卓)开发教程 Android通用下拉刷新控件的使用 Android实战开发租赁管理软件教程 酷蜂科技30万元安卓开发视频 尚学堂高明鑫全网最新.最牛.最全andriod视频

Android学习路线(三)运行你的Android应用

如果你按照上一课创建了你的Android项目,那么它包含默认的 "Hello World" 的源文件,能够让你的项目马上运行起来. 你如何运行你的应用以来与两件事:你是否拥有真正的Android设备和你是否使用的是Eclipse.这片课程向你展示如何使用Eclipse和命令行工具来将你的应用安装到真机上和模拟器上. 在你运行你的应用之前,你必须了解一下Android项目中的这些目录文件: AndroidManifest.xml 这个manifest file 描述了应用的基本特征和它的

android学习的两三事- studyjams论坛学习有感

作者:66^3工作室 出处:https://code.csdn.net/titer1 联系:1307316一九六八(短信最佳) 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. android学习的两三事 在整理这篇感想的时候,我正在星巴克,android sdk正在龟速的更新,最后的大作业还没有成行,于是就写写感想吧. 1 开篇 首先,我先自我介绍,一个典型的技术宅,叫我牛超人(csdn

[Android Pro] Android学习——在线查看android源代码的3种方式

原文:http://blog.csdn.net/chuekup/article/details/8067075 1. https://github.com/android 2. http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/ 上面2种都是通过第三方网站直接访问,这里主要说说下面这种方法: 3. 一个chrome内核浏览器插件:Android SDK Reference

Android学习系列(23)--App主界面实现

在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下最终的界面设计图:    上面顶部是一个9patch背景图片+标题文字:下面底部是5个tab标签,表示应用的5大模块.中间内容部分则是各个模块的具体内容,可以再分类,或者直接显示内容. 2.准备素材按照上篇文章的界面,我们需要事先提供两大方面的素材:顶部+底部.顶部的素材非常简单,最重要的是背景(9patch