80,362
社区成员
发帖
与我相关
我的任务
分享
cardList.setAdapter(cardItemAdapter);
//为每个列表项添加单击事件,点击进入名片详情
cardList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
ListView listView = (ListView)parent;
@SuppressWarnings("unchecked")
HashMap<String, Object> map = (HashMap<String, Object>)listView.getItemAtPosition(position);
String number = map.get("number").toString();
Intent intent = new Intent(MainActivity.this,CardDetailActivity.class);
startActivity(intent);
Log.v("abc", "你点击了ListView条目" + position+"电话是"+number);//在LogCat中输出信息
}
});
package com.wisesoft.cloudwab.adapter;
import java.util.ArrayList;
import java.util.HashMap;
import com.wisesoft.cloudwab.R;
import com.wisesoft.cloudwab.bean.Data;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class CardItemAdapter extends BaseAdapter {
private LayoutInflater mInflater;//得到一个LayoutInfalter对象用来导入布局
/*构造函数*/
public CardItemAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return getData().size();//返回数组的长度
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
/*书中详细解释该方法*/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
//观察convertView随ListView滚动情况
Log.v("MyListViewBase", "getView " + position + " " + convertView);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.card_list_item,
null);
holder = new ViewHolder();
/*得到各个控件的对象*/
holder.alpha = (TextView) convertView.findViewById(R.id.alpha);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.number = (TextView) convertView.findViewById(R.id.number);
holder.headImg = (ImageView)convertView.findViewById(R.id.headImg);
holder.bt_call = (ImageButton) convertView.findViewById(R.id.bt_call);
convertView.setTag(holder);//绑定ViewHolder对象
}
else{
holder = (ViewHolder)convertView.getTag();//取出ViewHolder对象
}
/*设置TextView显示的内容为我们存放在动态数组中的数据*/
holder.alpha.setText(getData().get(position).get("alpha").toString());
holder.name.setText(getData().get(position).get("name").toString());
holder.number.setText(getData().get(position).get("number").toString());
holder.headImg.setImageResource(R.drawable.mn);
holder.bt_call.setImageResource(R.drawable.call);
if(position!=0&&!(getData().get(position).get("alpha").equals(getData().get(position-1).get("alpha"))))
holder.alpha.setVisibility(View.VISIBLE);
/*为Button添加点击事件---打电话*/
holder.bt_call.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.v("abc", "你点击了按钮" + position);//打印Button的点击信息
}
});
return convertView;
}
/*添加一个得到数据的方法,方便使用*/
private ArrayList<HashMap<String, Object>> getData(){
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
/*为动态数组添加数据*/
int card_num = Data.cardList.size();
for(int i=0;i<card_num;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("alpha", Data.cardList.get(i).getHeadSpell());
map.put("number", Data.cardList.get(i).getTelNumber());
map.put("name", Data.cardList.get(i).getName());
listItem.add(map);
}
return listItem;
}
public final class ViewHolder{
public TextView alpha;
public TextView number;
public TextView name;
public ImageView headImg;
public ImageButton bt_call;
}
}