您的位置:首页 > 移动开发 > Android开发

android 列表+详情(可刷新,以EmailList和EmailDetail为例)

2015-06-05 08:48 579 查看
1 EmailList

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: