ListView动态加载图片以及分段加载数据

package com.xxxxx.sns.application.friend;


import java.util.ArrayList;
import java.util.List;





import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;


/**
 * 全站会员
 * 
 * @author Administrator
 * 
 */
public class AllMemberActivity extends Activity implements OnClickListener,
OnItemClickListener {


private List<SimpleUser> allMemberList;// 全站好友
private AllMemberListAdaterView allMemberListAdater;// 全站适配器


private ListView friendListView;// 全站好友列表
private Button backButton;// 返回按钮
private Button sortButton;// 排序按钮
private Button searchButton;//查询按钮
private EditText searchEditText;//查询KEY
private Button findFriendButton;// 找好友按钮
private TextView titleTextView;//全站会员标题


private LayoutInflater mLayoutInflater;
private LinearLayout footView;// 底部
private LinearLayout footTextLayout;// 点击
private TextView footTextView;// 文字
private ProgressBar footProgressBar;// 进度条
private boolean isLoading = false;// 当前是否在加载 false 没有
private int sortIn = SNSParam.ORDER_DEFAULT;


// private ComparatoSortUDefualtumber sortDefual = new ComparatoSortUDefualtumber();// 默认排序
// private ComparatoSortUHYNumber sortOnLineCount = new ComparatoSortUHYNumber();// 活跃°
// private ComparatoSortUFRNumber sortFriendCount = new ComparatoSortUFRNumber();// 好友数
// private ComparatoSortUVisiNumber sortSpaceViCount = new ComparatoSortUVisiNumber();// 空间访问数


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
allMemberList = new ArrayList<SimpleUser>();


getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.friend_main_tab_allmember);
initViews();
user_getall();
AllMsgListManage.getInstance().activityVisi.add(this);
}


@Override
protected void onResume() {
super.onResume();


}


private void initViews() {
searchButton = (Button) findViewById(R.id.friend_main_tab_allmember_search_Button);
searchButton.setOnClickListener(this);


searchEditText = (EditText) findViewById(R.id.friend_main_tab_allmember_edit_EditText);

allMemberListAdater = new AllMemberListAdaterView(getAllMemberList(), this);


backButton = (Button) findViewById(R.id.friend_main_tab_allmember_back_Button);
backButton.setOnClickListener(this);


titleTextView=(TextView)findViewById(R.id.people_user_TextView);

friendListView = (ListView) findViewById(R.id.friend_main_tab_allmember_ListView);


mLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
footView = (LinearLayout) mLayoutInflater.inflate(R.layout.all_list_item_foot, null);
footTextLayout = (LinearLayout) footView.findViewById(R.id.btn_more_bg_default_LinearLayout);
footTextLayout.setOnClickListener(this);
footTextView = (TextView) footView.findViewById(R.id.btn_more_bg_default_TextView);
footTextView.setOnClickListener(this);
footProgressBar = (ProgressBar) footView.findViewById(R.id.btn_more_bg_default_ProgressBar);
friendListView.addFooterView(footView);
loadTextes(SNSParam.LIMIT);


friendListView.setAdapter(allMemberListAdater);
friendListView.setOnItemClickListener(this);
friendListView.setDivider(null);
friendListView.setOnScrollListener(new MyScrollListener());


sortButton = (Button) findViewById(R.id.friend_main_tab_allmember_sort_Button);
sortButton.setOnClickListener(this);


findFriendButton = (Button) findViewById(R.id.friend_main_tab_myfriend_find_Button);
findFriendButton.setOnClickListener(this);


}


public List<SimpleUser> getAllMemberList() {
return allMemberList;
}


public void setAllMemberList(List<SimpleUser> allMemberList) {
this.allMemberList.addAll(allMemberList);
}


@Override
public void onClick(View v) {
dismiKeyBorwd();
switch (v.getId()) {
case R.id.friend_main_tab_allmember_back_Button:
finish();
break;
case R.id.friend_main_tab_allmember_sort_Button:
Intent intent = new Intent(this, AllsortDialogActivity.class);
startActivityForResult(intent, 23);
break;
case R.id.btn_more_bg_default_LinearLayout:
user_getallBtn();
break;
case R.id.btn_more_bg_default_TextView:
user_getallBtn();
break;
case R.id.friend_main_tab_myfriend_find_Button:
Intent intentFind = new Intent(this, FindPeopleActivity.class);
startActivity(intentFind);
break;

case R.id.friend_main_tab_allmember_search_Button:
try {
String key = searchEditText.getText().toString();
user_search(key);
} catch (Exception e) {
e.printStackTrace();
}
break;
default:
break;
}
}

//隐藏键盘
private void dismiKeyBorwd(){
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(AllMemberActivity.this
.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
//imm.hideSoftInputFromWindow(msgEditText.getWindowToken(), 0); 
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==FriendDialogGo.resultcode){
this.allMemberList.clear();
//user_getall();
return;
}


if (resultCode != RESULT_OK) {
return;
}
sortIn = data.getIntExtra(AllsortDialogActivity.ORDERSTRING,SNSParam.ORDER_DEFAULT);
System.out.println("sortIn--" + sortIn);
switch (sortIn) {
case SNSParam.ORDER_DEFAULT:
this.allMemberList.clear();
sortIn=SNSParam.ORDER_DEFAULT;
// Collections.sort(this.allMemberList, sortDefual);
// allMemberListAdater.update();
user_getall();
break;
case SNSParam.ORDER_BY_ACTIVITY:
this.allMemberList.clear();
sortIn=SNSParam.ORDER_BY_ACTIVITY;
user_getall();
// Collections.sort(this.allMemberList, sortOnLineCount);
// allMemberListAdater.update();
break;
case SNSParam.ORDER_BY_FRIEND:
this.allMemberList.clear();
sortIn=SNSParam.ORDER_BY_FRIEND;
user_getall();
// Collections.sort(this.allMemberList, sortFriendCount);
// allMemberListAdater.update();
break;
case SNSParam.ORDER_BY_VISIT:
this.allMemberList.clear();
sortIn=SNSParam.ORDER_BY_VISIT;
user_getall();
// Collections.sort(this.allMemberList, sortSpaceViCount);
// allMemberListAdater.update();
break;
}
}


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
SimpleUser app = getAllMemberList().get(arg2);
FriendDialogGo.actionFriendDialogGo(this, app);


}


private void ToastHint(String hint) {
Toast.makeText(this, hint, Toast.LENGTH_SHORT).show();
}


// 查询好友
private void user_search(final String key) {
try {
ProgressDialogHint.Show(this, "提示", "正在查找用户...");
SearchUser searchUser = new SearchUser();
searchUser.Request(this, key, SNSParam.ORDER_DEFAULT,
SNSParam.SEARCH_RULE_DEFAULT, 0, 20);
searchUser.SetOnResultListener(new onSearchUserListener() {
@Override
public int OnResultHandle(List<SimpleUser> list, int code,
String msg) {
ProgressDialogHint.Dismiss();
if (code != RespondType.SUCCESS || list == null) {
if (code==SNSParam.error_logo2||code==SNSParam.error_logo9) {
return 0;
}
if (msg != null && !msg.equalsIgnoreCase(""))

ToastHint(msg);
else
ToastHint("查找用户失败");


return 0;
} else {
if (list.size() < 1) {
ToastHint("抱歉!没有找到你要的好友。。");
} else {
// searchFriend( list);
FriendSearchActivity.actionFriendSearch(
AllMemberActivity.this, list,key);
}
}


// ToastHint("查找用户成功: 共(" + list.size() + ")个");
return 1;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}

private void user_getall() {
try {
ProgressDialogHint.Show(this, "提示", "正在读取所有用户...");
GetAllUser getAllUser = new GetAllUser();
int count = getAllMemberList().size();
if (count <= 0) {
count = 0;
}
getAllUser.Request(this, sortIn, count, 5);
getAllUser.SetOnResultListener(new onGetAllUserListener() {
@Override
public int OnResultHandle(List<SimpleUser> list, int code,
String msg,int allnum) {
if (allnum>0) {
titleTextView.setText(new StringBuffer().append("全站会员(").append(allnum).append(")"));
}
ProgressDialogHint.Dismiss();
if (code != RespondType.SUCCESS || list == null) {
if (code==SNSParam.NODATA) {
loadTextes(SNSParam.NOLIMIT);
}
if (code==SNSParam.error_logo2||code==SNSParam.error_logo9) {
return 0;
}
if (msg != null && !msg.equalsIgnoreCase(""))
ToastHint(msg);
else
ToastHint("读取所有用户失败");
return 0;
} else {


try {
if (list.size() > 0) {
loadTextes(list.size());
setAllMemberList(list);
allMemberListAdater.update();
}


} catch (Exception e) {
e.printStackTrace();


}
}


// ToastHint("读取所有用户成功: 共(" + list.size() + ")个用户");
return 1;
}
});
getAllUser.SetOnTimeoutListener(new HttpTimeoutListener() {
@Override
public int OnTimeoutHandle() {
ProgressDialogHint.Dismiss();
ToastHint("加载超时,请重试");
return 0;
}
}, 40000);
} catch (Exception e) {
e.printStackTrace();
}
}


class MyScrollListener implements OnScrollListener {


@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// System.out.println("f" + firstVisibleItem + "v" +
// visibleItemCount
// + "t" + totalItemCount);
// if(firstVisibleItem + visibleItemCount < totalItemCount - 3)
if (firstVisibleItem + visibleItemCount < totalItemCount + 2) {
// System.out.println("--f" + firstVisibleItem + "v"
// + visibleItemCount + "t" + totalItemCount);
return;
}
if (isLoading == false) {
user_getallBtn();
}
}


@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {


}
}


private void loadText() {
isLoading = true;
footProgressBar.setVisibility(View.VISIBLE);
footTextView.setText("正在加载信息...");
footTextLayout.setVisibility(View.VISIBLE);
}


private void loadTextes(int count) {

isLoading = false;
footProgressBar.setVisibility(View.GONE);
footTextView.setText("获取更多");

if (count<SNSParam.LIMIT) {
footTextLayout.setVisibility(View.GONE);
}
}


private void user_getallBtn() {
try {
loadText();
GetAllUser getAllUser = new GetAllUser();
int count = getAllMemberList().size() ;
if (count <= 0) {
count = 0;
}
getAllUser.Request(this, sortIn, count, 5);
getAllUser.SetOnResultListener(new onGetAllUserListener() {
@Override
public int OnResultHandle(List<SimpleUser> list, int code,String msg,int allnum) {
if (allnum>0) {
titleTextView.setText(new StringBuffer().append("全站会员(").append(allnum).append(")"));
}

if (code != RespondType.SUCCESS || list == null) {
if (code==SNSParam.NODATA) {
loadTextes(SNSParam.NOLIMIT);
}
if (code==SNSParam.error_logo2||code==SNSParam.error_logo9) {
return 0;
}
if (msg != null && !msg.equalsIgnoreCase(""))
ToastHint(msg);
// else
// ToastHint("读取所有用户失败");
return 0;
} else {


try {
if (list.size() > 0) {
loadTextes(list.size());
//装载数据
setAllMemberList(list);
allMemberListAdater.update();
}else {
loadTextes(SNSParam.LIMIT);
}


} catch (Exception e) {
e.printStackTrace();
loadTextes(SNSParam.LIMIT);
}
}


// ToastHint("读取所有用户成功: 共(" + list.size() + ")个用户");
return 1;
}
});
getAllUser.SetOnTimeoutListener(new HttpTimeoutListener() {
@Override
public int OnTimeoutHandle() {
loadTextes(SNSParam.LIMIT);
return 0;
}
}, 40000);
} catch (Exception e) {
e.printStackTrace();
}
}


}



-------------------adater----------------------------------------------------------------------


package com.xxxxxx.sns.application.friend.adater;


import java.util.HashMap;
import java.util.List;
import java.util.Map;




import android.app.Activity;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


public class AllMemberListAdaterView extends BaseAdapter {


private List<SimpleUser> allMemberList;// 全站的好友
private Activity mActivity;
private AsyncImageLoaderView asyncImageLoader = new AsyncImageLoaderView();// 实例化异步加载图片
private Map<Long, View>  cachMap=new HashMap<Long, View>();


public AllMemberListAdaterView(List<SimpleUser> allMemberList,
Activity mActivity) {
this.allMemberList = allMemberList;
this.mActivity = mActivity;
}


@Override
public int getCount() {
return allMemberList.size();
}


@Override
public Object getItem(int position) {


return position;
}


@Override
public long getItemId(int position) {


return position;
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ListViewItemViewEntity holder;
final SimpleUser app = allMemberList.get(position);


// if (convertView == null) {
if (!cachMap.containsKey(app.getUserId())) {


convertView = this.mActivity.getLayoutInflater().inflate(
R.layout.friend_main_tab_myfriend_mf_item, null);
holder = new ListViewItemViewEntity();
holder.nameTextView = (TextView) convertView
.findViewById(R.id.friend_main_tab_mfname_item_TextView);
holder.iconImageView = (ImageView) convertView
.findViewById(R.id.friend_main_tab_mficon_item_ImageView);
holder.officeTextView = (TextView) convertView
.findViewById(R.id.friend_main_tab_mfoffice_item_TextView);
holder.onlineTextView=(TextView) convertView
.findViewById(R.id.friend_main_tab_online_item_TextView);


holder.companyTextView = (TextView) convertView
.findViewById(R.id.friend_main_tab_mfcompny_item_TextView);


holder.rightButton = (Button) convertView
.findViewById(R.id.friend_main_tab_mfright_item_Button);




convertView.setTag(holder);
//cachMap.put(app.getUserId(), convertView);

//
} else {
// convertView=cachMap.get(app.getUserId());
holder = (ListViewItemViewEntity) convertView.getTag();
// holder.iconImageView.setImageResource(R.drawable.default_people_icon);// 默认图片
// holder.onlineTextView.setText("");

}

                 //实图片异步加载
final ImageView ii = holder.iconImageView;
Bitmap bitmap = null;
if (AllMsgListManage.getInstance().userIcon.containsKey(app.getAvatarUrl())) {
bitmap = AllMsgListManage.getInstance().userIcon.get(app.getAvatarUrl());
} else {


if (bitmap == null) {// 如果缓存没有图片,自己去下载
asyncImageLoader.loadBitmap(app.getAvatarUrl(),
new ImageCallbackByAid() {


@Override
public void imageLoaded(Bitmap imageBitmap,
String imageUrl, int appAid) {
if (imageBitmap != null) {
try {
// 设置控件图片
// ii.setImageBitmap(imageBitmap);
AllMsgListManage.getInstance().userIcon.put(imageUrl, imageBitmap);


} catch (Exception e) {


e.printStackTrace();
}
}
}
}, ii, 1);


}


}
if (bitmap != null) {
ii.setImageBitmap(bitmap);
} else {
ii.setImageResource(R.drawable.default_people_icon);// 默认图片
}


holder.nameTextView.setText(app.getUserName());


holder.officeTextView.setText(app.getOffice());


holder.companyTextView.setText(app.getCompanyName());
// System.out.println("onlineCount:" + app.getOnLineCount() + " friendCount:"+ app.getFriendCount() + "  spaceCount:" + app.getSpaceCount());
holder.rightButton.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
FriendDialogGo.actionFriendDialogGo(mActivity, app);


}
});
if (app.getOnline()==SimpleUser.ISONLINE) {
holder.onlineTextView.setText("(在线)");
}else {
holder.onlineTextView.setText("");
}





return convertView;
}

      // 更新数据
public void update() {
System.out.println("-------" + allMemberList.size());
this.notifyDataSetChanged();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值