单击项目的回收范围开始错误的活动



我是Android的新手,并在单击RecyclerView项目时尝试启动新活动。单击项目后,出现吐司并将其重定向到MainActivity,但是我需要重定向UserAdvertisementItemActivity。我在哪里错误?

代码来自UserAdvertisementListActivity

 recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity().getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() {
        @Override
        public void onClick(View view, int position) {
            UserAdvertisementListObject advertisementList = UserAdvertisementList.get(position);
            Toast.makeText(getActivity().getApplicationContext(), advertisementList.getFromCity()
                    + " - " + advertisementList.getToCity() + " is selected!", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(getActivity().getApplicationContext(), UserAdvertisementItemActivity.class);
            intent.putExtra("from_city", advertisementList.getFromCity());
            intent.putExtra("to_city", advertisementList.getToCity());
            intent.putExtra("number_of_places", advertisementList.getNumberOfPlaces());
            intent.putExtra("price", advertisementList.getPrice());
            intent.putExtra("datetime", advertisementList.getDatetime());
            intent.putExtra("info", advertisementList.getInfo());
            startActivity(intent);
            getActivity().finish();
        }

运行窗口:

I/Timeline: Timeline: Activity_launch_request time:411771599 intent:Intent { cmp=com.vladimirspucko.organizer/.activity.UserAdvertisementItemActivity (has extras) } 
I/Toast: Show toast from OpPackageName:com.vladimirspucko.organizer, PackageName:com.vladimirspucko.organizer 
I/Timeline: Timeline: Activity_launch_request time:411771685 intent:Intent { cmp=com.vladimirspucko.organizer/.activity.MainActivity }

我可以添加其他代码。如果有必要的话,请让我知道这一点!

有很多方法可以做到这一点...

请按照以下步骤:

首先(在适配器内构建公共接口

second(在适配器中使用onbindviewholder方法的视图持有人的setOnClickListener,并调用接口方法的一种

第三(转到MainActivity并实现我们在第一步中创建的接口,然后您应该在MainActivity中覆盖接口方法,然后使用StartActivity。

第一步

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {
public interface AdapterCallback {
    void onClickCallback(UserAdvertisementListObject advertisementList);
}
private AdapterCallback adapterCallback;
//...

第二步

 @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
    viewHolder.YourItem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    UserAdvertisementListObject advertisementList = UserAdvertisementList.get(i);
                    adapterCallback.OnClickCallBack(advertisementList);
                }
            });
    //...

最终步骤

   public class MainActivity extends AppCompatActivity implements YourAdapter.AdapterCallback{
    @Override
    public void onClickCallback(UserAdvertisementListObject advertisementList) {
        Intent intent = new Intent(MainActivity.this, UserAdvertisementItemActivity.class);
        intent.putExtra("from_city", advertisementList.getFromCity());
        intent.putExtra("to_city", advertisementList.getToCity());
        intent.putExtra("number_of_places", advertisementList.getNumberOfPlaces());
        intent.putExtra("price", advertisementList.getPrice());
        intent.putExtra("datetime", advertisementList.getDatetime());
        intent.putExtra("info", advertisementList.getInfo());
        startActivity(intent);
    }
}

感谢大家的帮助和抱歉。这是我在UserAdvertisementItemActivity中的错误。如果用户已登录并返回false,我正在检查此Activity。这就是为什么应用将我重定向到MainActivity的原因。其他代码正常工作。

这是一个答案:

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.yourView , viewGroup , false);
        return new YourAdapter.ViewHolder(view);
    }
    //...
    class ViewHolder extends RecyclerView.ViewHolder{
        private TextView YourItem; // assuming that YourItem is a TextView

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            YourItem= itemView.findViewById(R.id.YourItemId);//  it is an item in the layout that you defined in onCreateViewHolder method

        }

    }
}

最新更新