在开发项目中自定义适配器,就是家常便饭,随处可见。首先先创建一个活动
//继承了自定义的活动
public class MonthlyBillsActivity extends MyBaseActivity{
//自定义下拉刷新的listView
private PullToRefreshListView listView;
//存储数据
private List<MonthlyBillsInfo>monthlyBillsInfos = new ArrayList<MonthlyBillsInfo>();
//自定义适配器
private MonthlyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.monthly_bills_activity);
//获得数据
initData();
//初始化控件
initView();
//事件的监控
initEvent();
}
private void initData() {
MonthlyBillsInfo billsInfo = new MonthlyBillsInfo();
billsInfo.setName("小华");
billsInfo.setTitle("这里有好东西");
billsInfo.setTime("2014-8-18 14:29");
MonthlyBillsInfo billsInfo1 = new MonthlyBillsInfo();
billsInfo1.setName("小明");
billsInfo1.setTitle("往这看");
billsInfo1.setTime("2014-8-18 14:30");
MonthlyBillsInfo billsInfo2 = new MonthlyBillsInfo();
billsInfo2.setName("小慧");
billsInfo2.setTitle("好东西便宜卖了");
billsInfo2.setTime("2014-8-18 14:35");
monthlyBillsInfos.add(billsInfo);
monthlyBillsInfos.add(billsInfo1);
monthlyBillsInfos.add(billsInfo2);
}
private void initView() {
//自定义ActionBar
setHeadView(R.drawable.common_return_button, "", "", 0, "", null, null);
//初始化listView
listView = (PullToRefreshListView) findViewById(R.id.monthly_bills_listView);
listView.setScrollingWhileRefreshingEnabled(false);
//实例化适配器
adapter = new MonthlyAdapter(this, monthlyBillsInfos);
//把适配器和listView关联起来
listView.setAdapter(adapter);
}
private void initEvent() {
//下拉刷新上拉添加
listView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
new AddDataTask().execute();
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
new AppendDataTask().execute();
}
});
//点击listView中的每一项
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
}
});
ListView EaListView = listView.getRefreshableView();
registerForContextMenu(EaListView);
}
private class AddDataTask extends AsyncTask<Void, Void, String[]> {
@Override
protected String[] doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(String[] result) {//刷新
}
}
private class AppendDataTask extends AsyncTask<Void, Void, String[]> {
@Override
protected String[] doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(String[] result) {//加载
}
}
}
再建一个类存储数据
public class MonthlyBillsInfo {
private String title;
private String name;
private String time;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
自定义适配器
public class MonthlyAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater;
private List<MonthlyBillsInfo> Mdata = null;
public MonthlyAdapter(Context context, List<MonthlyBillsInfo> mdata) {
super();
this.context = context;
Mdata = mdata;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
//设置显示的条数
return Mdata == null ? 0 : Mdata.size();
}
@Override
public Object getItem(int position) {
//每项所在的位置
return Mdata.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MonthlyViewHold holder;
MonthlyBillsInfo info;
if (convertView == null) {
convertView = inflater.inflate(R.layout.monthly_bills_listview_item,
null);
holder = new MonthlyViewHold(convertView) ;
holder.monthly_title = (TextView) convertView.findViewById(R.id.monthly_title);
holder.monthly_name = (TextView) convertView.findViewById(R.id.monthly_name);
holder.monthly_time = (TextView) convertView.findViewById(R.id.monthly_time);
convertView.setTag(holder);
} else {
holder = (MonthlyViewHold) convertView.getTag();
}
info = this.Mdata.get(position);
holder.monthly_title.setText(info.getTitle());
String time = DateUtility.getDiffNum(info.getTime());
holder.monthly_name.setText(info.getName());
holder.monthly_time.setText(time);
return convertView;
}
}
class MonthlyViewHold {
TextView monthly_title, monthly_name, monthly_time;
@SuppressWarnings("unused")
View baseView;
MonthlyViewHold(View baseView) {
this.baseView = baseView;
}
}
2721

被折叠的 条评论
为什么被折叠?



