android 列表+详情(可刷新,以EmailList和EmailDetail为例)
2015-06-05 08:48
579 查看
1 EmailList
activity_email_detail.xml
adapter_email_list_item.xml
package com.haiyisoft.teamassistant.activity; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import com.haiyisoft.mobile.android.adapter.ImageViewBinder; import com.haiyisoft.mobile.android.adapter.TextViewBinder; import com.haiyisoft.mobile.android.adapter.TypedAdapter; import com.haiyisoft.mobile.android.adapter.impl.ClassAttachmentImpl; import com.haiyisoft.mobile.common.Email; import com.haiyisoft.teamassistant.R; import com.haiyisoft.teamassistant.swipeback.BaseActivity; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2; import com.handmark.pulltorefresh.library.PullToRefreshListView; /** * 邮件详细 * * @author 姜修武 * * <p> * Modification History: * </p> * <p> * Date Author Description * </p> * <p> * -------------------------------------------------------------- * </p> * <p> * 2015-05-20 姜修武 new * </p> * <p> * </p> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class EmailListActivity extends BaseActivity { private PullToRefreshListView emailListView; private TypedAdapter emailAdapter; private List<Email> emails; ImageButton searchButton; View searchbarEmailLayout; private EditText searchEdit; private Button searchBtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_email_list); initView(); } private void initView() { setActivityHeaderTitle(R.string.email_list); getHeaderLeftButton().setImageResource(R.drawable.icon_back); getHeaderRightButton().setBackgroundResource(0); getHeaderRightButton().setVisibility(View.VISIBLE); getHeaderRightButton().setImageDrawable( getResources().getDrawable(R.drawable.work_mail_search)); searchButton = (ImageButton) findViewById(R.id.headerRightButton); searchbarEmailLayout = (View) findViewById(R.id.searchbar_email); searchButton.setOnClickListener(new OnClickListener() { // 实现事件处理方法 @Override public void onClick(View v) { if (searchbarEmailLayout.getVisibility() == View.GONE) { searchbarEmailLayout.setVisibility(View.VISIBLE); } else { searchbarEmailLayout.setVisibility(View.GONE); } } }); emailListView = (PullToRefreshListView) findViewById(R.id.lv_email_list); emailListView.setOnRefreshListener(new OnRefreshListener2<ListView>() { public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView) { new GetDataTask().execute(); } public void onPullUpToRefresh( PullToRefreshBase<ListView> refreshView) { } }); emailListView.setMode(Mode.PULL_FROM_START); initAdapter(); ListView actualListView = emailListView.getRefreshableView(); actualListView.setAdapter(emailAdapter); actualListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (emails != null && !emails.isEmpty() && position - 1 < emails.size()) { Intent intent = new Intent(EmailListActivity.this,EmailDetailActivity.class); Email n = emails.get(position - 1); intent.putExtra("email",new String[] { n.getTitle(), n.getContent(), n.getDate(), n.getAddressor(), n.getRecipient(), n.getAccessoryNum(), n.getCopy() }); startActivity(intent); } } }); // 绑定搜索框 searchEdit = (EditText) findViewById(R.id.edt_searchbar); searchBtn = (Button) findViewById(R.id.ib_searchbtn); addSearchTextWatcher(); searchEdit.setOnKeyListener(onKey); } OnKeyListener onKey = new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { String keyword = searchEdit.getText().toString(); List<Email> list = new ArrayList<Email>(); if ("".equals(keyword)) { list = getEmailList(); } else { for (Email ct : emails) { if (ct.getContent().indexOf(keyword.toString()) != -1 || ct.getAddressor() .indexOf(keyword.toString()) != -1) { list.add(ct); } } } emails.clear(); emails.addAll(list); emailAdapter.notifyDataSetChanged(); } return false; } }; /** * 添加搜索框监听 */ private void addSearchTextWatcher() { searchBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String keyword = searchEdit.getText().toString(); List<Email> list = new ArrayList<Email>(); if ("".equals(keyword)) { list = getEmailList(); } else { for (Email ct : emails) { if (ct.getContent().indexOf(keyword.toString()) != -1 || ct.getAddressor() .indexOf(keyword.toString()) != -1) { list.add(ct); } } } emails.clear(); emails.addAll(list); emailAdapter.notifyDataSetChanged(); } }); } /** * 初始化适配器 */ private void initAdapter() { ClassAttachmentImpl<Email> c = new ClassAttachmentImpl<Email>(); c.addBinderMapItem(R.id.iv_email_item_icon, "showNew", new ImageViewShowBinder()); c.addBinderMapItem(R.id.tv_email_item_addressor, "addressor", new TextViewBinder()); c.addBinderMapItem(R.id.tv_email_item_content, "content", new TextViewBinder()); c.addBinderMapItem(R.id.tv_email_item_date, "date", new TextViewBinder()); emails = getEmailList(); emailAdapter = new TypedAdapter(this, emails, R.layout.adapter_email_list_item); emailAdapter.setBinder(c); } /** * 模拟数据 * * @return */ public List<Email> getEmailList() { List<Email> list = new ArrayList<Email>(); list.add(new Email( 1, "欢迎大家加入班组通验收计划", "欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号。", "今天", "张飞", "王丽丽", "王丽丽,王鹏,谢丛林", "1", true)); list.add(new Email(2, "欢迎大家加入班组通验收计划", "欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号。", "昨天", "王飞", "王丽丽", "王丽丽,王鹏,谢丛林", "1", true)); list.add(new Email(3, "欢迎大家加入班组通验收计划", "欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号。", "前天", "孙飞", "王丽丽", "王丽丽,王鹏,谢丛林", "1", true)); list.add(new Email(4, "欢迎大家加入班组通验收计划", "欢迎大家加入班组通,请一个小时内马上激活账号,欢迎大家加入班组通,请一个小时内马上激活账号。", "2015-05-18", "李飞", "王丽丽", "王丽丽,王鹏,谢丛林", "1", true)); list.add(new Email(5, "运动会", "公司于4月举行的运动会上,运动健儿们的飒爽英姿及观众的满腔热情,给我们留下了难忘的回忆。", "2015-05-14", "姜修武", "赵同元", "王斌,王鹏,张学龙", "3", false)); return list; } /** * 异步查询数据 * */ private class GetDataTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { emails.removeAll(emails); emails.addAll(getEmailList()); try { Thread.sleep(2000); } catch (InterruptedException e) { } return null; } @Override protected void onPostExecute(Void result) { emailAdapter.notifyDataSetChanged(); emailListView.onRefreshComplete(); } } private class ImageViewShowBinder extends ImageViewBinder { @Override public void setViewValue(View view, Object bean, String property) { ImageView imageView = (ImageView) view; Boolean value = null; try { value = (Boolean) getValue(bean, property); } catch (SecurityException e) { throw new IllegalAccessError(e.getMessage()); } catch (IllegalArgumentException e) { throw new IllegalAccessError(e.getMessage()); } catch (NoSuchMethodException e) { throw new IllegalAccessError(e.getMessage()); } catch (IllegalAccessException e) { throw new IllegalAccessError(e.getMessage()); } catch (InvocationTargetException e) { throw new IllegalAccessError(e.getMessage()); } if (value) { imageView.setVisibility(View.VISIBLE); } else { imageView.setVisibility(View.INVISIBLE); } } } }EmailDetai
package com.haiyisoft.teamassistant.activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.haiyisoft.teamassistant.R; import com.haiyisoft.teamassistant.swipeback.BaseActivity; /** * 邮件详细 * * @author 姜修武 * * <p>Modification History:</p> * <p>Date Author Description</p> * <p>--------------------------------------------------------------</p> * <p>2015-05-21 姜修武 new </p> * <p></p> */ public class EmailDetailActivity extends BaseActivity { private TextView title; private TextView date; private TextView content; private TextView addressor; private TextView recipient; private TextView copy; private TextView accessoryNum; private String[] email; Button hidden; Button show; View shoujianrenLayout; View chaosongLayout; View hengxian; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_email_detail); email = getIntent().getStringArrayExtra("email"); hidden = (Button) findViewById(R.id.hidden); show = (Button) findViewById(R.id.show); shoujianrenLayout=(View)findViewById(R.id.shoujianren); chaosongLayout=(View)findViewById(R.id.chaosong); hengxian=(View)findViewById(R.id.hengxian); hidden.setVisibility(Button.GONE); shoujianrenLayout.setVisibility(View.GONE); chaosongLayout.setVisibility(View.GONE); hengxian.setVisibility(View.GONE); hidden.setOnClickListener(new OnClickListener() { // 实现事件处理方法 @Override public void onClick(View v) { shoujianrenLayout.setVisibility(View.GONE); chaosongLayout.setVisibility(View.GONE); hengxian.setVisibility(View.GONE); hidden.setVisibility(Button.GONE); show.setVisibility(Button.VISIBLE); } }); show.setOnClickListener(new OnClickListener() { // 实现事件处理方法 @Override public void onClick(View v) { shoujianrenLayout.setVisibility(View.VISIBLE); chaosongLayout.setVisibility(View.VISIBLE); hengxian.setVisibility(View.VISIBLE); show.setVisibility(Button.GONE); hidden.setVisibility(Button.VISIBLE); } }); initView(); } /** * 初始化视图 */ private void initView() { getHeaderTitleView().setText("邮件"); getHeaderLeftButton().setImageResource(R.drawable.icon_back); title = (TextView) findViewById(R.id.tv_email_detail_title); date = (TextView) findViewById(R.id.tv_email_detail_date); content = (TextView) findViewById(R.id.tv_email_detail_content); addressor = (TextView) findViewById(R.id.tv_email_detail_addressor); recipient = (TextView) findViewById(R.id.tv_email_detail_recipient); copy = (TextView) findViewById(R.id.tv_email_detail_copy); accessoryNum = (TextView) findViewById(R.id.tv_email_detail_accessoryNum); title.setText(email[0]); date.setText(email[2]); content.setText(email[1]); addressor.setText(email[3]); recipient.setText(email[4]); copy.setText(email[6]); accessoryNum.setText(email[5]); } }activity_email_list.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:orientation="vertical" > <include layout="@layout/a1_head" /> <RelativeLayout android:id="@+id/searchbar_email" android:layout_width="match_parent" android:layout_height="50.0dp" android:background="#e6e6e6" android:visibility="gone" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="8dp" android:orientation="horizontal" > <EditText android:id="@+id/edt_searchbar" style="@style/SecondFontSize" android:layout_width="0.8dip" android:layout_weight="0.8" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:background="@drawable/edittext_bg" android:hint="@string/home_contact_search_email" android:maxLength="20" android:paddingBottom="4dp" android:paddingTop="4dp" android:singleLine="true" android:textColor="#c5c5c5" android:textColorHint="#c5c5c5" /> <Button android:id="@+id/ib_searchbtn" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:paddingBottom="4dp" android:paddingTop="4dp" android:text="搜索" android:textColor="#00aef0" /> </LinearLayout> </RelativeLayout> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/lv_email_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/searchbar_email" android:background="#ffffff" android:cacheColorHint="#00000000" android:divider="#DDDDDD" android:dividerHeight="0.5dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:paddingTop="3dp" android:scrollbars="none" android:smoothScrollbar="true" ptr:ptrAnimationStyle="flip" ptr:ptrMode="pullFromStart" /> </LinearLayout>
activity_email_detail.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:background="#ffffff" android:orientation="vertical" > <include layout="@layout/a1_head" /> <LinearLayout android:layout_width="match_parent" android:layout_height="36dp" android:paddingEnd="0dp" android:paddingLeft="15dp" android:paddingRight="0dp" android:paddingStart="15dp" > <TextView android:id="@+id/textView1" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发件人" android:textColor="#00aef0" /> <TextView android:id="@+id/tv_email_detail_addressor" style="@style/SecondFontSize" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.07" android:paddingLeft="10dp" /> <Button android:id="@+id/hidden" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="#FFFFFF" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="隐藏" android:textColor="#00aef0" /> <Button android:id="@+id/show" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="#FFFFFF" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="显示" android:textColor="#00aef0" /> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="0.5dp" android:background="#ddd" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <LinearLayout android:id="@+id/shoujianren" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/TextView01" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="12dp" android:text="收件人" android:textColor="#00aef0" /> <TextView android:id="@+id/TextView03" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="抄送" android:textColor="#00aef0" /> </LinearLayout> <LinearLayout android:id="@+id/chaosong" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:orientation="vertical" > <TextView android:id="@+id/tv_email_detail_recipient" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="12dp" android:paddingLeft="11dp" /> <TextView android:id="@+id/tv_email_detail_copy" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="11dp" /> </LinearLayout> </LinearLayout> <View android:id="@+id/hengxian" android:layout_width="fill_parent" android:layout_height="0.5dp" android:background="#ddd" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="8dp" android:orientation="vertical" > <TextView android:id="@+id/tv_email_detail_title" style="@style/SecondFontSize" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="15dp" /> <TextView android:id="@+id/tv_email_detail_date" style="@style/SecondFontSize" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:paddingLeft="15dp" android:textColor="#888888" /> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="0.5dp" android:background="#ddd" /> <TextView android:id="@+id/tv_email_detail_content" style="@style/SecondFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:textColor="#888888" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp" android:layout_marginTop="30dp" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="8dp" android:orientation="horizontal" android:paddingLeft="15.0dp" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="8dp" android:contentDescription="@string/image_description" android:scaleType="center" android:src="@drawable/work_mail_accessory" /> <TextView android:id="@+id/textView3" style="@style/ForthFontSize" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="4dp" android:layout_marginTop="8dp" android:paddingTop="9.0dp" android:text="附件共(" /> <TextView android:id="@+id/tv_email_detail_accessoryNum" style="@style/ForthFontSize" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginTop="8dp" android:gravity="center_horizontal" android:paddingTop="9.0dp" android:text="1" android:textColor="#888888" /> <TextView android:id="@+id/textView4" style="@style/ForthFontSize" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginTop="8dp" android:paddingTop="9.0dp" android:text="个)" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:layout_marginRight="15.0dp" android:background="@drawable/boder" > <TextView android:id="@+id/textView5" style="@style/ForthFontSize" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="7dp" android:layout_marginLeft="10dp" android:layout_marginTop="8dp" android:paddingBottom="4dp" android:paddingTop="6dp" android:text="XXXXXX.DOC" android:textColor="#00aef0" /> </LinearLayout> </LinearLayout> </LinearLayout>
adapter_email_list_item.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="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/iv_email_item_icon" android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingLeft="10.0dp" android:paddingRight="10.0dp" android:scaleType="center" android:src="@drawable/icon_new_point" android:contentDescription="@string/image_description" /> <LinearLayout android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="8dp" android:layout_marginBottom="10dp" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/tv_email_item_addressor" style="@style/SecondFontSize" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1.23" android:textColor="#666666" /> <TextView android:id="@+id/tv_email_item_date" style="@style/ThirdFontSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="3.0dp" android:textColor="#888888" /> </LinearLayout> <TextView android:id="@+id/tv_email_item_content" style="@style/SecondFontSize" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:layout_marginTop="8dp" android:singleLine="true" android:textColor="#888888" /> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:paddingLeft="20.0dp" android:paddingRight="20.0dp" android:src="@drawable/icon_arrow_right" android:contentDescription="@string/image_description" /> </LinearLayout>
相关文章推荐
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
- Android - Mount a Samba share
- 如何在Android模拟器上安装apk文件
- android 传递数据的方法(数据类型)
- ArcGIS For Android ExportTileCache应用
- android 传递数据的方法(无返回值)
- android 传递数据的方法(有返回值,以班组通中计划申请延期为例)
- Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)
- android 方向传感器应用
- udacity android 实践笔记: lesson 4 part b
- udacity android 实践笔记: lesson 4 part a
- Android开发记录20-获取缓存大小和清除缓存功能
- Android 获取并显示远程图片 Picasso框架的使用(二)
- Android——View宽高的设置和多种获取宽高的方法、layout_grivaty与grivaty的区别
- Android中postinvalidate和validate的区别
- Developing for Android, II The Rules: Memory
- Android中ArrayAdapter在自动提示文本中的使用
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- Android编码规范
- Android 数据库打包随APK发布