1) ListView (列表视图)
1、在布局文件中添加<ListView></ListView>
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
2、在activity中获得到listview
@Bind(R.id.listView)
ListView listview;
3、获取item子项布局(这里可以使自己定义的,也可以引用android中自带的)
Android.R.layout.simple_list_item_1;(内含一个textView)
Android.R.layout.simple_list_item_2;(内含两个textView)
4、获取获取adapter的数据源list ?或者 array[] ?
users = new ArrayList<UserBean>();
5、构建adapter()
public class UserAdapter extends BaseAdapter {
private Context context;
private List<UserBean> users;
public UserAdapter(Context context, List<UserBean> users) {
this.context = context;
this.users = users;
}
@Override
public int getCount() {
return users.size();
}
@Override
public UserBean getItem(int position) {
return users.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if(convertView == null) {
convertView = View.inflate(context, R.layout.activity_show_item, null);
vh = new ViewHolder(convertView);
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
UserBean bean = getItem(position);
if(TextUtils.isEmpty(bean.getAvatar())) {
vh.avatar.setImageResource(R.drawable.tara03);
} else {
ImageLoader.getInstance().displayImage(bean.getAvatar(), vh.avatar);
}
// 用户名
vh.userName.setText(bean.getName());
return convertView;
}
public class ViewHolder {
@Bind(R.id.show_item_avatar)
ImageView avatar;
@Bind(R.id.show_item_userName)
TextView userName;
public ViewHolder(View convertView) {
ButterKnife.bind(this, convertView);
}
}
}
adapter = new UserAdapter(this, users);
6、listview.setAdapter(adapter); //listview 管理adapter
listview.setAdapter(adapter);
7、点击事件onItemClickListener,(点击列表中的item就会执行)点击事件中容易调整list或者是array中的数据从而来调整listView列表,记得使用以下来更新列表:
listview.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
final int position, long id) {
final UserBean bean = users.get(position);
AlertDialog.Builder builder = new AlertDialog.Builder(ShowActivity.this);
builder.setIcon(android.R.drawable.ic_menu_info_details)
.setTitle("删除这破玩意?")
.setMessage("真的要删除" + bean.getName() + "么?")
.setNegativeButton("不!", null)
.setPositiveButton("好啊", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 如果bean的objectid 的属性为null
// 就必须指定一个objectId才行, 如何指定呢???
// bean中有username, 利用usernam去查询, 把查到的objectId赋值给bean,在进行下面的操作
if(bean.getObjectId()==null){
bean.setObjectId(bean.getObjId());
}
bean.delete(context, new DeleteListener() {
@Override
public void onFailure(int arg0, String arg1) {
Log.d("TAG", "删除失败" + arg0);
Toast.makeText(ShowActivity.this, "删除失败" + arg0,Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess() {
dbutil.remove(bean);
users.remove(bean);
adapter.notifyDataSetChanged();
Toast.makeText(ShowActivity.this, "删除成功",Toast.LENGTH_SHORT).show();
}
});
}
})
.create().show();
return true;
}
});
list.remove(i);
// 调用adapter的方法通知listview更新
adapter.notifyDataSetChanged();
users.clear();
users.addAll(list);
adapter.notifyDataSetChanged();