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());
}
}