`
爱琴海的水手
  • 浏览: 57790 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

对新浪微博android客户端中ListView的实现

阅读更多
   新浪围脖android客户端中显示围脖信息条目的ListView有这几样功能:
1、点击ListView中没有展开的条目时,会展开该条目,显示更多的详细信息,并关闭其他展开的条目。
2、点击ListView中展开的条目时,会弹出对话框,提供更多的功能选项。
   因为毕设要实现类似的功能,所以就揣摩了一下,下面给出简单的示例:
   假设先显示图书标题列表,点击标题后会显示图书的作者和出版社。
 
  <LinearLayout 
	      android:id="@+id/LinearLayout01" 
	      android:layout_width="fill_parent" 
	      android:layout_height="fill_parent" 
	      xmlns:android="http://schemas.android.com/apk/res/android"
	      android:orientation="vertical"
	>
	<TextView android:id="@+id/list_item_1"
		  android:layout_width="fill_parent"
		  android:layout_height="wrap_content"
		  android:textSize="30dip"

	/>
	<TextView android:id="@+id/list_item_2"
		  android:layout_width="fill_parent"
		  android:layout_height="wrap_content"
		  android:visibility="gone"
	/>	
	
	<TextView android:id="@+id/list_item_3"
		  android:layout_width="fill_parent"
		  android:layout_height="wrap_content"
		  android:visibility="gone"	
	/>	
  </LinearLayout>
  

以上layout用来为SimpleAdapter提供布局文件,三个TextView分别对应图书的标题,作者和出版社。因为作者和出版社刚开始时隐藏的,所以将它们的visibility属性设置成gone值,这里需要说明下,visibility有三个属性值,visible,invisible和gone.visible指该组件可视,invisible和gone指该组件不可视,两者的区别在于,invisible让该组件的内容不可视,但是组件的大小依然会将空间占用,而gone是彻底从布局空间上隐藏。
下面是具体的实现类:
public class BookListActivity extends Activity {
   private ListView mBooksListView;
   private List<HashMap<String,String>> mItems;
   private SimpleAdapter mAdapter;
   private Book mBook;
	
   /*
    * 保存ListView中最近一次被点击的Item的信息
    */
     //ListView的第一个Item的position值为0,故必须初始化mLastPosition,使其永不冲突
     private int mLastPosition = -1;
     private View mLastView;

	
     @Override
     protected void onCreate(Bundle savedInstanceState) {
	  super.onCreate(savedInstanceState);
	  setContentView(R.layout.list_1);
	  //获取ListView
          mBooksListView = (ListView)findViewById(R.id.list1);
	  mItems = new ArrayList<HashMap<String,String>>();
	  List<Book>  mBooks = .....//获取想要显示的beans
	  for(Book b : mBooks) {
		HashMap<String,String> item = new HashMap<String,String>();
		    item.put(Constant.ATTR_BOOK_TITLE,b.getTitle());
		    item.put(Constant.ATTR_BOOK_AUTHOR, b.getAuthor());
		    item.put(Constant.ATTR_BOOK_PUBLISHER, b.getPublisher());
		    mItems.add(item);
		}
	  mAdapter = new SimpleAdapter(this,mItems,R.layout.list_items_1,
                     new String[]{Constant.ATTR_BOOK_TITLE,
                                 Constant.ATTR_BOOK_AUTHOR,
                              Constant.ATTR_BOOK_PUBLISHER},
                     new int[]{R.id.list_item_1,
                               R.id.list_item_2,
                               R.id.list_item_3});                     
	  mBooksListView.setAdapter(mAdapter);
	  mBooksListView.setOnItemClickListener(new OnItemClickListener(){
	  @Override
	  public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
		if(position != mLastPosition) {
             //如果点击的条目和上一次的不同,那么就展开本条目,关闭上次展开的条目
		    setVisible(view);
		    setGone(mLastView);
		    mLastPosition = position;
		    mLastView = view;
		} else {
              //如果点击的条目和上一次的相同,那么就弹出对话框,提供更多功能选项
		    showDialog(......);
		}
	    }
			
	   });
	}
	
	/*
	 * 让view可视
	 */
	private void setVisible(View view) {
	   if(view == null)return;
	   LinearLayout layout = (LinearLayout)view;
           layout.findViewById(R.id.list_item_2).setVisibility(View.VISIBLE);
           layout.findViewById(R.id.list_item_3).setVisibility(View.VISIBLE);
	}
	
	/*
	 * 让view不可视
	 */
	private void setGone(View view) {
	   if(view == null)return;
	   LinearLayout layout = (LinearLayout)view;
	   layout.findViewById(R.id.list_item_2).setVisibility(View.GONE);
	   layout.findViewById(R.id.list_item_3).setVisibility(View.GONE);
	} 
}


1
1
分享到:
评论
2 楼 爱琴海的水手 2010-06-07  
sxs 写道
,新浪没开放接口,哥是很难做出来的,就算做出来,新浪也会不高兴的 - -


我就是写毕设用用的哈
1 楼 sxs 2010-06-04  
,新浪没开放接口,哥是很难做出来的,就算做出来,新浪也会不高兴的 - -

相关推荐

    安卓listview相关相关-仿照新浪微博Android客户端个人中心的ScrollView.rar

    仿照新浪微博Android客户端个人中心的ScrollView.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    2011年沈大海讲师Android的新浪微博客户端源代码

    基于Android的新浪微博系统开发01-开发概述 基于Android的新浪微博系统开发02-下载微博sdk ...基于Android的新浪微博系统开发07-不断扩展的ListView 基于Android的新浪微博系统开发08-动态获取Icon和局部TextVieww

    源码 listview相关 仿照新浪微博Android客户端个人中心的ScrollView.zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    仿新浪微博客户端的Android控件组合应用_修正版

    仿新浪微博Android客户端主界面的源码。

    新浪微博开放平台开发-android客户端

    从这个星期开始,准备拿新浪微博开放平台做个实践,开发一个功能简单的android客户端,会尽可能的完善功能。 上图是这个客户端的主要界面。今天增加的功能。 1.简单的样式和皮肤,只是添加了按钮。 运行的系统是...

    android listview 下拉刷新 上拉翻页 仿新浪微博客户端

    android listview 下拉刷新 上拉翻页 仿新浪微博客户端 完美的demo

    仿新浪微博界面的Android代码

    仿新浪微博Android客户端主界面的源码。

    Android 腾讯微博客户端源码.zip

    这个微博客户端中用到得一些知识点。 1:sqllite数据库的应用 2:SharedPreferences结合sqllite保存默认登录用户 3:圆角背景,圆角头像,.9.png格式在android中的应用 4:布局方面的当然是最常用的ReleativeLayout,...

    Android UI自定义ListView实现下拉刷新和加载更多效果

    因为小巫近期要开发新浪微博客户端,需要实现ListView的下拉刷新,所以就想把这个UI整合到项目当中去,这里只是一个demo,可以根据项目的需要进行修改。 就不要太在乎界面了哈: 知道你们想要源码了,去下吧...

    根据新浪SDK开发的新浪客户端

    自己根据新浪微博SDK,简单的实现了授权,保存信息到数据库,读取微博内容到listview,发表微博等功能。代码写的不是缜密,所以老手勿怒。

    android开发资料大全

    android开发之【腾讯微博android客户端开发】Parameter类和SyncHttp 网友自己写的Android腾讯微薄客户端开发教程 Android 所有Dialog 对话框 大合集 详解【附源码】 Android自定义View研究-- 一个小Demo Android...

    BaseDemo:Android开发通用演示

    library-PullScrollView仿照新浪微博Android客户端个人中心的ScrollView,下拉背景伸缩回弹效果library-PullToRefresh下拉刷新ListView,已经停止维护并且有不少bug,不推荐使用项目地址:library-SlidingMenu

    ListView 顶部松开刷新数据

    Listview顶部松开即可刷新数据效果,类似新浪微博,人人等android客户端刷新数据效果。该源码希望能帮上有需要的朋友。

    黎活明android教程的全程PPT

    课程安排 第一天 1&gt;搭建Android开发环境 2&gt; 创建与启动手机模拟器 3&gt; 学习使用ANDROID操作系统 4&gt; 开发与运行(卸载)第一个ANDROID应用 ...第九天以后 讲解Android手机视频客户端、来电知了、新浪微博客户端等项目

    传智播客Android视频教程-课程源码.rar

    第九天以后 讲解Android手机视频客户端、来电知了、新浪微博客户端等项目 项目名称 Android手机视频客户端:本系统专为视频网站与电视媒体而开发的手机视频客户端,通过该软件,手机用户可以在线观看视频,在线...

    Android程序开发之Listview下拉刷新上拉(滑动分页)加载更多

    最近做的类似于微博的项目中,有个Android功能要使用到listview的向下拉刷新来刷新最新消息,向上拉刷新(滑动分页)来加载更多。 新浪微博就是使用这种方式的典型。 当用户从网络上读取微博的时候,如果一下子全部...

    西安软件培训作品

    这个项目花费了将近一个月的时间,其中很多时间都在学新浪的授权机制和开放平台的api,虽然新浪微博官方提供Android sdk,但是实在看不懂(网上大多开发人员都抱怨新浪微博提供的sdk很烂)所以就索性从最底层开始...

    博客园网站系统.zip

    1.本项目实现的主要功能有博客园论坛新闻浏览、博客浏览、新闻实时评论、一键下载到离线内容、博客搜索、一键登录、发表博客园站内说说(站内叫“闪存”)、一键分享内容到常用社交平台(由于开放平台的审核限制,仅...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    这个项目完全按照高访问量互联网站进行设计,通过这个项目,学员不仅可以在实战中巩固对前面学习的ASP.Net、ADO.Net、WinForm等知识的掌握,还可以掌握网站防黑、缓存、SEO、静态化、搜索引擎技术、AJAX等大型互联网...

Global site tag (gtag.js) - Google Analytics