对新浪微博android客户端中ListView的兑现
对新浪微博android客户端中ListView的实现
新浪围脖android客户端中显示围脖信息条目的ListView有这几样功能:
1、点击ListView中没有展开的条目时,会展开该条目,显示更多的详细信息,并关闭其他展开的条目。
2、点击ListView中展开的条目时,会弹出对话框,提供更多的功能选项。
因为毕设要实现类似的功能,所以就揣摩了一下,下面给出简单的示例:
假设先显示图书标题列表,点击标题后会显示图书的作者和出版社。
以上layout用来为SimpleAdapter提供布局文件,三个TextView分别对应图书的标题,作者和出版社。因为作者和出版社刚开始时隐藏的,所以将它们的visibility属性设置成gone值,这里需要说明下,visibility有三个属性值,visible,invisible和gone.visible指该组件可视,invisible和gone指该组件不可视,两者的区别在于,invisible让该组件的内容不可视,但是组件的大小依然会将空间占用,而gone是彻底从布局空间上隐藏。
下面是具体的实现类:
,新浪没开放接口,哥是很难做出来的,就算做出来,新浪也会不高兴的 - -
,新浪没开放接口,哥是很难做出来的,就算做出来,新浪也会不高兴的 - -
我就是写毕设用用的哈
新浪围脖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 楼
sxs
2010-06-04
2 楼
爱琴海的水手
2010-06-07
sxs 写道
我就是写毕设用用的哈