Java 如何限制双击项目

Java 如何限制双击项目,java,android,android-studio,Java,Android,Android Studio,嗨,我的应用程序有问题。双击其中一个项目后,它只打开一次,但当我返回选择项目徽标、标题和背景时,它就消失了。 我的每个布局在清单中都有android:launchMode=“singleTop”,以限制打开相同的项目。我必须重新启动应用程序,使其恢复正常 布局代码 public class Organizacje extends AppCompatActivity implements OrgCallback { private RecyclerView rvOrg; priva

嗨,我的应用程序有问题。双击其中一个项目后,它只打开一次,但当我返回选择项目徽标、标题和背景时,它就消失了。 我的每个布局在清单中都有
android:launchMode=“singleTop”
,以限制打开相同的项目。我必须重新启动应用程序,使其恢复正常

布局代码

public class Organizacje extends AppCompatActivity implements OrgCallback {
    private RecyclerView rvOrg;
    private OrgAdapter orgAdapter;
    private List<Org> mdata;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_organizacje);
        setTitle("Organizacje ekologiczne");
        initViews();
        initmdataOrg();
        setupOrgAdapter();
    }

    private void setupOrgAdapter() {
        orgAdapter = new OrgAdapter(mdata, this);
        rvOrg.setAdapter(orgAdapter);
    }

    private void initmdataOrg() {
        mdata = new ArrayList<>();
        mdata.add(new Org(getString(R.string.unep2), getString(R.string.unep_long_desc),R.drawable.unep));
        mdata.add(new Org(getString(R.string.ksib2), getString(R.string.ksib_long_desc), R.drawable.ksib));
        mdata.add(new Org(getString(R.string.pzfd2), getString(R.string.pzfd_long_desc),R.drawable.pzfd));
    }

    private void initViews() {
        rvOrg = findViewById(R.id.rv_org);
        rvOrg.setLayoutManager(new LinearLayoutManager(this));
        rvOrg.setHasFixedSize(true);
    }

    @Override
    public void onOrgItemClick(int pos, ImageView imgContainer, ImageView imgLogo, TextView title) {
        Intent intent = new Intent(this, OrgDetails.class);
        intent.putExtra("orgObject", mdata.get(pos));
        Pair<View, String> p1 = Pair.create((View)imgContainer,"containerTN");
        Pair<View, String> p2 = Pair.create((View)imgLogo,"logoTN");
        Pair<View, String> p3 = Pair.create((View)title,"titleTN");

        ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, p1, p2, p3);
        startActivity(intent, optionsCompat.toBundle());
    }
}
public class Organizacje扩展AppCompatActivity实现OrgCallback{
私人回收站;
专用OrgAdapter OrgAdapter;
私有列表数据;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_organizacje);
setTitle(“组织机构”);
initViews();
initmdataOrg();
setuporgandapter();
}
私有void setuporgandapter(){
orgAdapter=新的orgAdapter(mdata,this);
rvOrg.setAdapter(orgAdapter);
}
私有void initmdataOrg(){
mdata=newarraylist();
add(新组织(getString(R.string.unep2)、getString(R.string.unep_long_desc)、R.drawable.unep));
add(新组织(getString(R.string.ksib2)、getString(R.string.ksib_long_desc)、R.drawable.ksib));
添加(新组织(getString(R.string.pzfd2)、getString(R.string.pzfd_long_desc)、R.drawable.pzfd));
}
私有void initViews(){
rvOrg=findviewbyd(R.id.rv_org);
rvOrg.setLayoutManager(新的LinearLayoutManager(本));
rvOrg.setHasFixedSize(true);
}
@凌驾
公共无效onOrgItemClick(int pos、ImageView imgContainer、ImageView imgLogo、TextView title){
意向意向=新意向(此,OrgDetails.class);
intent.putExtra(“orgObject”,mdata.get(pos));
Pair p1=Pair.create((视图)imgContainer,“containerTN”);
Pair p2=Pair.create((视图)imgLogo,“logoTN”);
Pair p3=Pair.create((视图)标题“titleTN”);
ActivityOptionsCompat optionsCompat=ActivityOptionsCompat.MakeScenetTransitionAnimation(这个,p1,p2,p3);
startActivity(intent,options compat.toBundle());
}
}
适配器的代码

public class OrgAdapter extends RecyclerView.Adapter<OrgAdapter.orgviewholder> {
List<Org> mdata;
OrgCallback callback;

public OrgAdapter(List<Org> mdata, OrgCallback callback) {
    this.mdata = mdata;
    this.callback = callback;
}

@NonNull
@Override
public orgviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_org, parent, false);
    return new orgviewholder(view);
}

@Override
public void onBindViewHolder(@NonNull orgviewholder holder, int position) {
    Glide.with(holder.itemView.getContext())
            .load(mdata.get(position).getDrawableResource())
            .transforms(new CenterCrop(), new RoundedCorners(16))
            .into(holder.imgOrg);
    holder.title.setText(mdata.get(position).getTitle());
    holder.description.setText(mdata.get(position).getDescription());
}

@Override
public int getItemCount() {
    return mdata.size();
}

public class orgviewholder extends RecyclerView.ViewHolder {
    ImageView imgOrg, imgContainer;
    TextView title, description;
    public orgviewholder(@NonNull View itemView) {
        super(itemView);
        this.imgOrg = itemView.findViewById(R.id.item_org_logo);
        this.imgContainer = itemView.findViewById(R.id.container_org);
        this.title = itemView.findViewById(R.id.item_org_title);
        this.description = itemView.findViewById(R.id.item_org_description);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callback.onOrgItemClick(getAdapterPosition(), imgContainer, imgOrg, title);
            }
        });
    }
}
}
公共类OrgAdapter扩展了RecyclerView.Adapter{ 列出mdata; 组织回调; 公共OrgAdapter(列出mdata、OrgCallback回调){ this.mdata=mdata; this.callback=回调; } @非空 @凌驾 public orgviewholder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){ View=LayoutInflater.from(parent.getContext()) .充气(R.layout.item\u组织,父项,false); 返回新的orgviewholder(视图); } @凌驾 public void onBindViewHolder(@NonNull orgviewholder,int位置){ Glide.with(holder.itemView.getContext()) .load(mdata.get(position).getDrawableResource()) .transforms(新中心裁剪(),新圆角(16)) .into(holder.imgOrg); holder.title.setText(mdata.get(position.getTitle()); holder.description.setText(mdata.get(position.getDescription()); } @凌驾 public int getItemCount(){ 返回mdata.size(); } 公共类orgviewholder扩展了RecyclerView.ViewHolder{ ImageView imgOrg,imgContainer; 文本视图标题、描述; 公共orgviewholder(@NonNull View itemView){ 超级(项目视图); this.imgOrg=itemView.findviewbyd(R.id.item\u org\u logo); this.imgContainer=itemView.findviewbyd(R.id.container\u org); this.title=itemView.findviewbyd(R.id.item\u org\u title); this.description=itemView.findviewbyd(R.id.item\u org\u description); itemView.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ onOrgItemClick(getAdapterPosition(),imgContainer,imgOrg,title); } }); } } } 尝试在onResume()中添加项目

public class Organizacje扩展AppCompatActivity实现OrgCallback{
私人回收站;
专用OrgAdapter OrgAdapter;
私有列表数据;
@凌驾
受保护的void onResume(){
super.onResume();
initmdataOrg();
setuporgandapter();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_organizacje);
setTitle(“组织机构”);
initViews();
}
私有void setuporgandapter(){
orgAdapter=新的orgAdapter(mdata,this);
rvOrg.setAdapter(orgAdapter);
}
私有void initmdataOrg(){
mdata=newarraylist();
add(新组织(getString(R.string.unep2)、getString(R.string.unep_long_desc)、R.drawable.unep));
add(新组织(getString(R.string.ksib2)、getString(R.string.ksib_long_desc)、R.drawable.ksib));
添加(新组织(getString(R.string.pzfd2)、getString(R.string.pzfd_long_desc)、R.drawable.pzfd));
}
私有void initViews(){
rvOrg=findviewbyd(R.id.rv_org);
rvOrg.setLayoutManager(新的LinearLayoutManager(本));
rvOrg.setHasFixedSize(true);
}
@凌驾
公共无效onOrgItemClick(int pos、ImageView imgContainer、ImageView imgLogo、TextView title){
意向意向=新意向(此,OrgDetails.class);
intent.putExtra(“orgObject”,mdata.get(pos));
Pair p1=Pair.create((视图)imgContainer,“containerTN”);
Pair p2=Pair.create((视图)imgLogo,“logoTN”);
Pair p3=Pair.create((视图)标题“titleTN”);
ActivityOptionsCompat optionsCompat=ActivityOptionsCompat.MakeScenetTransitionAnimation(这个,p1,p2,p3);
startActivity(intent,options compat.toBundle());
}
}

如果不起作用,请发布您的适配器代码。

您在生命周期中的列表位置?我有一个带有单个项目的布局,另一个带有循环视图的布局,用于创建这些项目的列表。我通过您的图像知道这一点。我
public class Organizacje extends AppCompatActivity implements OrgCallback {
    private RecyclerView rvOrg;
    private OrgAdapter orgAdapter;
    private List<Org> mdata;

    @Override
    protected void onResume() {
        super.onResume();
        initmdataOrg();
        setupOrgAdapter();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_organizacje);
        setTitle("Organizacje ekologiczne");
        initViews();
        
    }

    private void setupOrgAdapter() {
        orgAdapter = new OrgAdapter(mdata, this);
        rvOrg.setAdapter(orgAdapter);
    }

    private void initmdataOrg() {
        mdata = new ArrayList<>();
        mdata.add(new Org(getString(R.string.unep2), getString(R.string.unep_long_desc),R.drawable.unep));
        mdata.add(new Org(getString(R.string.ksib2), getString(R.string.ksib_long_desc), R.drawable.ksib));
        mdata.add(new Org(getString(R.string.pzfd2), getString(R.string.pzfd_long_desc),R.drawable.pzfd));
    }

    private void initViews() {
        rvOrg = findViewById(R.id.rv_org);
        rvOrg.setLayoutManager(new LinearLayoutManager(this));
        rvOrg.setHasFixedSize(true);
    }

    @Override
    public void onOrgItemClick(int pos, ImageView imgContainer, ImageView imgLogo, TextView title) {
        Intent intent = new Intent(this, OrgDetails.class);
        intent.putExtra("orgObject", mdata.get(pos));
        Pair<View, String> p1 = Pair.create((View)imgContainer,"containerTN");
        Pair<View, String> p2 = Pair.create((View)imgLogo,"logoTN");
        Pair<View, String> p3 = Pair.create((View)title,"titleTN");

        ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, p1, p2, p3);
        startActivity(intent, optionsCompat.toBundle());
    }
}