单击列表视图时是否可以更改片段

时间:2021-06-16 14:50:15

标签: java android android-studio

我想在底部导航活动下单击列表视图项时更改片段

但我不知道如何编写 OnClickListener

谁能提供一些提示或告诉我这个程序有什么问题?

这是程序

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

非常感谢

package com.example.campus.ui.campus;

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


import androidx.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 个答案:

答案 0 :(得分:1)

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

<ListView x:Name="listViewControl" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...

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

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

现在在您的 onClick() 中使用..

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

然后在您的活动中传递匿名或简单地实现接口。

callback.onItemClick(yourClickedItem, position)
相关问题