继承BaseAdapter构建变化的listview

public class DiaryAdapter extends BaseAdapter {


<span style="white-space:pre">	</span>int num = 0;
<span style="white-space:pre">	</span>private List<Map<String,Object>> coll;
<span style="white-space:pre">	</span>private LayoutInflater mInflater;
<span style="white-space:pre">	</span>private Context context;
<span style="white-space:pre">	</span>public DiaryAdapter(Context context, List<Map<String,Object>> coll) {
<span style="white-space:pre">		</span>this.coll = coll;
<span style="white-space:pre">		</span>mInflater = LayoutInflater.from(context);
<span style="white-space:pre">		</span>this.context = context;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public int getCount() {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>System.out.println(coll.size());
<span style="white-space:pre">		</span>return coll.size();
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public Object getItem(int arg0) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>System.out.println(coll.get(arg0));
<span style="white-space:pre">		</span>return coll.get(arg0);
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public long getItemId(int arg0) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>System.out.println(arg0);
<span style="white-space:pre">		</span>return arg0;
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public View getView(int arg0, View arg1, ViewGroup arg2) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>final Map<String,Object> te = coll.get(arg0);
<span style="white-space:pre">		</span>boolean isMonth = (Boolean) te.get("isMonth");
<span style="white-space:pre">		</span>ViewHolder viewHolder;
<span style="white-space:pre">		</span>System.out.println(arg0);
<span style="white-space:pre">		</span>System.out.println(arg1);
<span style="white-space:pre">		</span>if(arg1 == null)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>viewHolder = new ViewHolder();
<span style="white-space:pre">			</span>arg1 = mInflater.inflate(R.layout.diarylistvmonth, null);
<span style="white-space:pre">			</span>viewHolder.month = (TextView) arg1.findViewById(R.id.diarymonth);
<span style="white-space:pre">			</span>viewHolder.imal = (ImageView) arg1.findViewById(R.id.diaryimal);
<span style="white-space:pre">			</span>viewHolder.imar = (ImageView) arg1.findViewById(R.id.diaryimar);
<span style="white-space:pre">			</span>viewHolder.value = (TextView) arg1.findViewById(R.id.diaryvalue);
<span style="white-space:pre">			</span>viewHolder.diary_layout = (LinearLayout) arg1.findViewById(R.id.diary_layout);
<span style="white-space:pre">			</span>arg1.setTag(viewHolder);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>else
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>viewHolder = (ViewHolder) arg1.getTag();
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if(isMonth)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>viewHolder.month.setVisibility(0);
<span style="white-space:pre">			</span>viewHolder.month.setText((CharSequence) te.get("month"));
<span style="white-space:pre">			</span>viewHolder.diary_layout.setVisibility(8);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>else
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>viewHolder.diary_layout.setVisibility(0);
<span style="white-space:pre">			</span>viewHolder.month.setVisibility(8);
<span style="white-space:pre">			</span>viewHolder.value.setText((CharSequence) te.get("value"));
<span style="white-space:pre">			</span>viewHolder.imal.setBackgroundResource((Integer) te.get("imal"));
<span style="white-space:pre">			</span>viewHolder.imar.setBackgroundResource((Integer) te.get("imar"));
<span style="white-space:pre">			</span>arg1.setOnClickListener(new OnClickListener(){


<span style="white-space:pre">				</span>@Override
<span style="white-space:pre">				</span>public void onClick(View arg0) {
<span style="white-space:pre">					</span>// TODO Auto-generated method stub
<span style="white-space:pre">					</span>Intent intent = new Intent(context,DiaryDetailActivity.class);
<span style="white-space:pre">					</span>intent.putExtra("id", ((Integer)te.get("id")));
<span style="white-space:pre">					</span>context.startActivity(intent);
<span style="white-space:pre">				</span>}
<span style="white-space:pre">				</span>
<span style="white-space:pre">			</span>});
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return arg1;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>class ViewHolder {
<span style="white-space:pre">		</span>public ImageView imal;
<span style="white-space:pre">		</span>public ImageView imar;
<span style="white-space:pre">		</span>public TextView value;
<span style="white-space:pre">		</span>public TextView month;
<span style="white-space:pre">		</span>public LinearLayout diary_layout;
<span style="white-space:pre">		</span>public boolean isMonth = true;
<span style="white-space:pre">	</span>}


}

基本流程:

1、继承BaseAdapter类

2、自动重写基本的函数getcout,getitem,getitemid

3、写构造函数,传入context和数据

4、定义一个类,包括需要使用到的控件,用来存放控件信息

5、重写getview,判断该view是否为空,为空则新建一个自定义类,绑定控件后与该view绑定,否则直接获取该view,随后将数据放入即可。

需要特别注意的是,每一个子view必须加载所有的控件,如果个listview的子view情况不同,可以通过setvisibility来处理

外部调用:

List<Map<String , Object>> listItems;
Map<String,Object> temp = new HashMap<String,Object>();
temp.put("isMonth", false);
temp.put("imal", R.drawable.diary_bq1_blue);
temp.put("value", "1234567.......");
temp.put("imar", R.drawable.diary_bq2_pink);
listItems.add(temp);
list = (ListView) findViewById(R.id.diarylistview);
DiaryAdapter diaryAdapter = new DiaryAdapter(this,listItems);
list.setAdapter(diaryAdapter);		<span style="white-space:pre">	</span>

构建一个list后将数据放入,创建一个自定义的adapter,通过构造函数导入context和数据,再调用list.setAdapter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值