llf2580 2023-03-20 18:14 采纳率: 66.7%
浏览 86
已结题

Android Studio:关于ListView点击事件该怎么写?

我定义了一个名为RecommendItem的类,里面包含一系统数据和一个Intent,并且定义了getIntent()方法,我想通过该方法获取要跳转的界面,从而实现点击ListView的item实现相应的跳转。
利用自定义的适配器实现了以下界面

img


之后我想添加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;    }
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2023-03-20 18:32
    关注
    AdapterView<?> parent, View view, int position, long id
    父页面,视图,当前位置,产生事件的对象的id
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月20日
  • 赞助了问题酬金15元 3月20日
  • 修改了问题 3月20日
  • 创建了问题 3月20日

悬赏问题

  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?