我定义了一个名为RecommendItem的类,里面包含一系统数据和一个Intent,并且定义了getIntent()方法,我想通过该方法获取要跳转的界面,从而实现点击ListView的item实现相应的跳转。
利用自定义的适配器实现了以下界面
//写在fragment的onActivityCreated()方法内,所以加了getActivity()
ListView recommend_viewlist = getActivity().findViewById(R.id.recommend_list);
//自定义的适配器,运行后展示正常,显示内容是一个含有很多RecommendItem对象应该List
List<RecommendItem> recommend_list = new ArrayList<RecommendItem>();// 定义要加入数据的list
// 创建加入表中的RecommendItem对象
RecommendItem diet1 = new RecommendItem(R.drawable.diet1,"轻断食第1天","#饮食","","");
Intent d1 = new Intent(getContext(), Diet1Activity.class);
diet1.setIntent(d1);
RecommendItemdiet2 = new RecommendItem(R.drawable.diet2,"轻断食第2天","#饮食","","");
Intent d2 = new Intent(getContext(), Diet2Activity.class);
diet2.setIntent(d2);
RecommendItemdiet3 = new RecommendItem(R.drawable.diet3,"轻断食第3天","#饮食","","");
Intent d3 = new Intent(getContext(), Diet3Activity.class);
diet3.setIntent(d3);
// 上述RecommendItem对象有很多,加入表里的顺序也不确定(打算弄推荐算法),所有不能用switch(position)方法写事件响应
recommend_list.add(diet1);//这样写的加入表里的代码
MyListAdapter adapter = new MyListAdapter();
recommend_viewlist.setAdapter(adapter);
recommend_viewlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 这里应该怎么写?看不懂上面参数代表什么
// 我想获取点击的这一项的RecommendItem对象,然后通过其getIntent()方法获取intent,然后实现页面跳转
}
});
// 自定义适配器
class MyListAdapter extends BaseAdapter {
@Override
public int getCount() { return recommend_list.size(); }
@Override
public Object getItem(int position) { return recommend_list.get(position); }
@Override
public long getItemId(int position) { return position; }
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder holder;
if(convertView == null) {
convertView = View.inflate(getContext(),R.layout.community_list_item,null);//布局就是上面显示的图片
holder = new MyViewHolder();
holder.recommend_title = convertView.findViewById(R.id.recommended_title);
holder.recommend_tag = convertView.findViewById(R.id.recommended_tags);
holder.recommend_cover = convertView.findViewById(R.id.recommended_cover);
convertView.setTag(holder);
}
else
holder = (MyViewHolder)convertView.getTag();
RecommendItem obj = recommend_list.get(position);
holder.recommend_title.setText(obj.getItemTitle());
holder.recommend_cover.setImageResource(obj.getItemId());
holder.recommend_tag.setText(obj.getTag());
return convertView;
}
class MyViewHolder {// 每个item布局含有一个图片,两个TextView
TextView recommend_title,recommend_tag;
ImageView recommend_cover;
}
}
RecommendItem类:
public class RecommendItem {
public int itemId; // 推荐元素封面id,例:R.drawable.xx
public String itemTitle; // 推荐元素标题
public String tag1; // 推荐元素标签
public String tag2;
public String tag3;
public String tag;
public Intent intent;
public RecommendItem() { }
public RecommendItem(int itemId, String itemTitle, String tag1, String tag2, String tag3) {
this.itemId = itemId;
this.itemTitle = itemTitle;
this.tag1 = tag1;
this.tag2 = tag2;
this.tag3 = tag3;
this.tag = tag1+" "+tag2+" "+tag3;
}
public String getTag() { return tag1+" "+tag2+" "+tag3; }
// 设置了set和get Intent 的方法
public Intent getIntent() { return intent; }
public void setIntent(Intent intent) { this.intent = intent; }
}
AdapterView<?> parent, View view, int position, long id
父页面,视图,当前位置,产生事件的对象的id