有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以在listview单击时更改片段

我想更改在底部导航活动下单击listview项时的片段

但我不知道该如何写这首歌

任何人都可以提供一些提示,或者告诉我这个程序出了什么问题

这是节目

感谢您花时间观看我的节目

多谢各位

package com.example.campus.ui.campus;

import 安卓.app.Activity;
import 安卓.app.Fragment;
import 安卓.app.FragmentManager;
import 安卓.app.FragmentTransaction;
import 安卓.content.Context;
import 安卓.content.Intent;
import 安卓.net.Uri;
import 安卓.util.Log;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.BaseAdapter;
import 安卓.widget.ImageView;
import 安卓.widget.LinearLayout;
import 安卓.widget.TextView;


import 安卓x.appcompat.app.AppCompatActivity;

import com.example.c.MainActivity;
import com.example.c.R;
import com.example.c.database.campus.CampusData;
import com.example.c.ui.campusInformation.CampusInformationActivity;
import com.example.c.ui.campusInformation.CampusInformationFragment;


import java.util.ArrayList;
import java.util.List;

public class CampusListLayoutAdapter extends BaseAdapter {

    private LayoutInflater layoutInflater;
    private List<CampusData> campusList = new ArrayList<CampusData>();
    private int resourceViewID;
    private Context context;

    private Context mContext;

    static class ViewHolder{
        LinearLayout llCampusCard;
        TextView tvCampusName;
        TextView tvCampusAddress;
        ImageView ivCampusImage;
    }

    public CampusListLayoutAdapter(Context c, List<CampusData>  campusList){

        context = c;
        layoutInflater = LayoutInflater.from(c);
        this.campusList = campusList;
    }

    @Override
    public int getCount() {
        return campusList.size();
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }



    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        mContext = viewGroup.getContext();
        ViewHolder holder = new ViewHolder();
        view = layoutInflater.inflate(R.layout.listview_campus, null);


        if(view != null){
            holder.tvCampusName = view.findViewById(R.id.tvCampusName);
            holder.tvCampusAddress = view.findViewById(R.id.tvCampusAddress);
            holder.ivCampusImage = view.findViewById(R.id.ivCampusImage);

            holder.tvCampusName.setText(campusList.get(i).name);
            holder.tvCampusAddress.setText(campusList.get(i).address);

            String image = campusList.get(i).image;
            resourceViewID = context.getResources().getIdentifier(image, "drawable", context.getPackageName());
            holder.ivCampusImage.setImageResource(resourceViewID);

            view.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    



                }

            });



            return view;
        }else {
            return null;
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    首先,在适配器类中创建一个接口

    public interface Callbacks {
        void onItemClick(YourObject object, int position); // arguments as per the requirement
    }
    

    将适配器的构造函数更改为

    Callbacks callback;
    public CampusListLayoutAdapter(Context c, List<CampusData>  campusList, Callbacks callback){
     .....
     this.callback = callback;
    }
    

    现在在你的onClick()中使用

    callback.onItemClick(yourClickedItem, position)
    

    然后在活动中传递一个匿名或简单的实现接口

    adapter = new CampusListLayoutAdapter(context, list, new CampusListLayoutAdapter.Callbacks() {
                @Override
                public void onItemClick(Alert_bean alert, int position) {
                    // do what you want here in activity like changing fragment or view updates
                }
            });