ListView点击item之后拿到适配的内容进行下一步动作,是android移动开发经常遇到的事,基础差,然后又懒,不愿意看源码的同学,想拿到内容可能会想到直接用适配器去拿,比如我(然后就被狠狠的嘲讽了),其实完全没必要,直接从listview.setOnItemClickListener当中返回的Parent中就能拿。
我的适配器:
class AddAdapter extends BaseAdapter { List<SearchByBookMarkType.DataBean> beanList; public AddAdapter(List<SearchByBookMarkType.DataBean> beanList) { this.beanList = beanList; } @Override public int getCount() { return beanList == null ? 0 : beanList.size(); } @Override public Object getItem(int position) { return beanList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { addPeriodicalHolder holder; if (convertView == null) { convertView = LayoutInflater.from(AddPeriodical.this).inflate(R.layout.activity_about_batch, null); holder = new addPeriodicalHolder(convertView); convertView.setTag(holder); } else { holder = (addPeriodicalHolder) convertView.getTag(); } holder.bindView(beanList.get(position)); return convertView; } class addPeriodicalHolder { ImageView icSelect; ImageView addHeadPic; TextView addTitle; public addPeriodicalHolder(View convertView) { icSelect = convertView.findViewById(R.id.ic_select); addHeadPic = convertView.findViewById(R.id.add_head_pic); addTitle = convertView.findViewById(R.id.add_title); } public void bindView(SearchByBookMarkType.DataBean bean) { addTitle.setText(bean.getTitle());//1.标题 String url = bean.getPreviewImage();//2.图片 if (url != null && !url.isEmpty()) { Glide.with(AddPeriodical.this).load(url).into(addHeadPic); } else addHeadPic.setImageResource(R.drawable.pic_head); } } }
我的适配的内容:
public class SearchByBookMarkType { /** * currentTime : 1527045547764 * code : 0 * data : [{"id":1,"title":"你喂员工吃草,却指望他们有狼性? ","previewImage":"https://upload-images.jianshu.io/upload_images/3554552-73b7deea1e417e95.png"}] * message : 请求成功 * status : 200 */ private long currentTime; private int code; private String message; private int status; private List<DataBean> data; public long getCurrentTime() { return currentTime; } public void setCurrentTime(long currentTime) { this.currentTime = currentTime; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { /** * id : 1 * title : 你喂员工吃草,却指望他们有狼性? * previewImage : https://upload-images.jianshu.io/upload_images/3554552-73b7deea1e417e95.png */ private int id; private String title; private String previewImage; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPreviewImage() { return previewImage; } public void setPreviewImage(String previewImage) { this.previewImage = previewImage; } } }
listview.setOnItemClickListener的时候从parent拿到适配的对象:
addPeriodical.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { SearchByBookMarkType.DataBean bean = (SearchByBookMarkType.DataBean) parent.getAdapter().getItem(position); int articleid = bean.getId(); String picUrl = bean.getPreviewImage(); String articleTile = bean.getTitle(); } });