`
爱琴海的水手
  • 浏览: 58209 次
  • 性别: 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

    本资源"安卓listview相关相关-仿照新浪微博Android客户端个人中心的ScrollView.rar"是开发者为了模仿新浪微博客户端个人中心的滚动视图(ScrollView)而创建的一个示例项目。在实际应用中,ScrollView通常用于承载多...

    新浪微博android客户端

    《构建与优化:新浪微博Android客户端详解》 在移动互联网领域,社交应用占据着举足轻重的地位,其中新浪微博作为国内知名社交媒体平台,其Android客户端的开发与优化是许多开发者关注的焦点。本篇文章将深入探讨...

    新浪微博Android客户端代码

    【标题】:“新浪微博Android客户端代码”揭示了这个项目的核心,即开发者通过自定义实现而非使用新浪官方提供的SDK来构建一个Android平台上的微博客户端。这样的做法可能是因为开发者希望通过更底层的编程来更好地...

    Android源码——新浪微博Android客户端.zip

    《深入剖析:Android源码——新浪微博Android客户端》 在Android开发领域,理解并研究大型应用的源码是提升技能和洞察设计模式的重要途径。本文将围绕"Android源码——新浪微博Android客户端.zip"这一主题,详细...

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

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

    android新浪微博客户端源码

    本文将围绕“android新浪微博客户端源码”这一主题,深入探讨源码中的关键技术和设计模式,为Android开发者提供一份详尽的学习资料。 首先,我们要明确,这个开源项目是基于Android平台开发的,主要目标是实现一个...

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

    本篇文章将深入探讨如何在Android中实现ListView的下拉刷新和上拉翻页功能,仿照新浪微博客户端的交互体验。 首先,下拉刷新通常指的是用户在ListView顶部向下滑动时,触发数据的更新加载。这种功能可以实现在用户...

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

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

    android新浪微博客户端demo

    这个“android新浪微博客户端demo”项目旨在实现接收、发送以及评论微博的功能,这涵盖了Android应用开发的基础以及与社交媒体API的集成。以下是对这些知识点的详细说明: 1. **Android开发环境**:首先,你需要一...

    Android仿新浪微博客户端源代码

    以上就是构建一个仿新浪微博Android客户端所需的关键技术点。通过学习和实践这个项目,开发者可以提升自己的Android应用开发能力,深入理解Android系统的工作原理,以及如何与第三方API进行交互。

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

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

    android开发新浪微博客户端+完整攻略

    综上所述,开发一个完整的新浪微博Android客户端涉及的知识点广泛且深入,包括OAuth认证、UI设计与布局、网络请求、数据解析、用户交互、异常处理、性能优化以及测试调试等多个方面。这个项目对于初学者来说是一次...

    Android 新浪微博客户端

    在Android平台上,开发一款功能完善的新浪微博客户端是一项技术挑战与创新的结合。这个项目"Android 新浪微博客户端"展示了如何利用Android SDK和相关的开发工具来构建一个功能丰富的移动应用,为用户提供浏览、发布...

    android开发新浪微博客户端源代码

    本项目"android开发新浪微博客户端源代码"提供了完整的实现方案,让我们一起深入探讨其中的关键知识点。 1. **Android应用基本架构**: Android应用通常由多个组件构成,如Activity(活动)、Service(服务)、...

    新浪微博 android DEMO

    今天我们将深入探讨一个特别的项目——“新浪微博 android DEMO”,这是一个专为Android平台设计的新浪微博客户端示例程序,它提供了分享新微博、转发微博、评论以及查询微博等核心功能,对于想要学习Android应用...

    Android新浪微博客户端

    在移动应用开发领域,Android平台上的新浪微博客户端是开发者经常研究的一个案例,因为这涉及到Android SDK的使用、网络通信、UI设计以及社交功能的实现等多个方面。本项目基于API-19(即Android 4.0以上版本),...

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

    以上是对"仿新浪微博客户端的Android控件组合应用_修正版"项目中涉及的关键技术点的详细解释,通过这个项目,开发者不仅可以学习到Android控件的综合运用,还能掌握数据加载、用户体验优化等方面的知识。

    android开发新浪微博客户端+完整攻略+源码

    通过这个完整的攻略,开发者不仅能学会如何创建一个功能完备的新浪微博客户端,还能提升对Android平台整体开发流程的理解。源码分析和实际操作将有助于巩固理论知识,提高动手能力。同时,这样的项目经验对个人简历...

    android应用源码(精)新浪微博客户端源码.zip源码资源下载

    《深入剖析Android应用:基于新浪微博客户端源码》 在Android开发领域,研究知名应用的源码是提升技术能力的重要途径之一。本篇文章将基于“android应用源码(精)新浪微博客户端源码.zip”这一资源,深入探讨其中...

Global site tag (gtag.js) - Google Analytics