简体   繁体   English

如何从第一个活动 android studio 中不存在的第二个活动添加新数据?

[英]How to add new data from second activity that doesn't exist in first activity android studio?

I have the following data in my Main Activity: Place Image, Place Name, and Place Location.我的主要活动中有以下数据:地点图像、地点名称和地点位置。 I want to add the Description and Gallery in the Second Activity, but I don't have the data to pass from Main to Second Activity.我想在第二个活动中添加描述和画廊,但我没有从主要活动传递到第二个活动的数据。 How to do this?这该怎么做? Is it possible to achieve?有可能实现吗?

Here's my Main Activity这是我的主要活动

public class MainActivity extends AppCompatActivity {

RecyclerView mainRecycler, mpRecycler;
MainAdapter mainAdapter;
MpAdapter mpAdapter;
EditText searchView;
CharSequence search="";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    searchView = findViewById(R.id.search);

    mainRecycler = findViewById(R.id.main_recycler);
    mpRecycler = findViewById(R.id.mp_recycler);
    mainRecycler();
    mpRecycler();
}

private void mainRecycler() {
    mainRecycler.setHasFixedSize(true);
    mainRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));

    final ArrayList<MainHelperClass> mainLocations = new ArrayList<>();
    mainLocations.add(new MainHelperClass(R.drawable.image1, "Place Name 1", "Loc 1"));
    mainLocations.add(new MainHelperClass(R.drawable.image2, "Place Name 2", "Loc 2"));
    mainLocations.add(new MainHelperClass(R.drawable.image3, "Place Name 3", "Loc 3"));

    mainAdapter = new MainAdapter(mainLocations, getApplicationContext());
    mainRecycler.setAdapter(mainAdapter);

    searchView.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
            mainAdapter.getFilter().filter(charSequence);
            search = charSequence;
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

}

private void mpRecycler() {
    mpRecycler.setHasFixedSize(true);
    mpRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

    ArrayList<MpHelperClass> mpLocations = new ArrayList<>();
    mpLocations.add(new MpHelperClass(R.drawable.image1, "Place Name 1", "Loc 1"));
    mpLocations.add(new MpHelperClass(R.drawable.image2, "Place Name 2", "Loc 2"));
    mpLocations.add(new MpHelperClass(R.drawable.image3, "Place Name 3", "Loc 3"));

    mpAdapter = new MpAdapter(mpLocations, getApplicationContext());
    mpRecycler.setAdapter(mpAdapter);
}

public void onClick(View view) {
    Intent intent = new Intent(this, MainDetails.class);
    startActivity(intent);
}
}

Here's my Adapter这是我的适配器

public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MainViewHolder> implements Filterable {

ArrayList<MainHelperClass> mainLocations;
ArrayList<MainHelperClass> filteredMainLocations;
Context context;
public MainAdapter(ArrayList<MainHelperClass> mainLocations, Context context) {
    this.mainLocations = mainLocations;
    this.context = context;
    this.filteredMainLocations = mainLocations;
}


@NonNull
@Override
public MainViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_card_design,parent,false);
    MainViewHolder mainViewHolder = new MainViewHolder(view);
    return mainViewHolder;
}

@Override
public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {

    final MainHelperClass mainHelperClass = filteredMainLocations.get(position);
    holder.image.setImageResource(mainHelperClass.getImage());
    holder.placeName.setText(mainHelperClass.getPlaceName());
    holder.location.setText(mainHelperClass.getLocation());

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, MainDetails.class);
            intent.putExtra("image", mainHelperClass.getImage());
            intent.putExtra("place name", mainHelperClass.getPlaceName());
            intent.putExtra("location", mainHelperClass.getLocation());
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    });
}

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

public static class MainViewHolder extends RecyclerView.ViewHolder{

    ImageView image;
    TextView placeName, location;

    public MainViewHolder(@NonNull View itemView) {
        super(itemView);
        image = itemView.findViewById(R.id.main_image);
        placeName = itemView.findViewById(R.id.main_place_name);
        location = itemView.findViewById(R.id.main_location);
    }
}

   public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {

            String key = charSequence.toString();
            if (key.isEmpty()) {
                filteredMainLocations = mainLocations;
            }else {
                ArrayList<MainHelperClass> isFiltered = new ArrayList<>();
                for (MainHelperClass row : mainLocations) {
                    if (row.getPlaceName().toLowerCase().contains(key.toLowerCase())) {
                        isFiltered.add(row);
                    }
                }

                filteredMainLocations = isFiltered;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = filteredMainLocations;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, 
FilterResults filterResults) {
            filteredMainLocations = (ArrayList<MainHelperClass>) 
filterResults.values;
            notifyDataSetChanged();
        }
    };
   }
   }

Here's my Second Activity这是我的第二个活动

public class MainDetails extends AppCompatActivity {
ImageView image;
TextView placeName, location;

RecyclerView.Adapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_details);

    image = (ImageView)findViewById(R.id.main_image_details);
    placeName = (TextView)findViewById(R.id.main_place_name_details);
    location = (TextView)findViewById(R.id.main_loc_details);

 image.setImageResource(getIntent().getIntExtra("image", 0));
    placeName.setText(getIntent().getStringExtra("place name"));
    location.setText(getIntent().getStringExtra("location"));

}

}

Use bundle to pass data to the second activity.使用 bundle 将数据传递给第二个活动。 First, When you want to start your second activity write this:首先,当你想开始你的第二个活动时,写这个:

Intent intent = new Intent(context, MainDetails.class);
intent.putExtra("mylist", mainLocations);
startActivity(intent);

Then, In MainDetails class get your bundle:然后,在 MainDetails class 中获取您的包:

ArrayList< MainHelperClass > myList = (ArrayList< MainHelperClass >)getIntent().getSerializableExtra("mylist");

*Don't forget to implement Serializable in your MainHelperClass class. *不要忘记在 MainHelperClass class 中实现 Serializable。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将数据从第二个活动发送到第一个活动不适用于Android - Sending data from a second activity to the first one doesn't work Android Android教程“创建第二个活动”不适用于Android Studio,或者 - Android tutorial “Create the second activity” doesn't work with Android Studio, or 将数据从第二个活动移到第一个活动 - Move Data from Second Activity to first Activity 如何将第一个Activity中的数据保存到第二个Activity中? - How to save the data in my ListView from the first Activity to the second Activity? 第二个活动上的 Android Studio 我的按钮不起作用 - Android Studio My Button on the second Activity doesn't Work 如何在android中从单击按钮的第一个活动和从第二个按钮单击的第三个活动中进行第二个活动 - How to go second activity from first activity on button click and Third activity from Second on button click in android Android OnActivityResult,在第二次调用时,第二个活动在完成后不会返回到第一个活动 - Android OnActivityResult, on second call second activity doesn't return to the first activity after finish 如何根据第一活动数据(单击单选按钮)从第二活动转到第三活动或第四活动? - How to go from second activity to third activity or fourth activity based on first activity data (Radio button clicked)? 使用Android导航组件从第一个活动导航到第二个活动时如何关闭/完成第一个活动 - How to close/finish the first activity when navigating from first activity to second activity using android navigation component Android Studio 从第二个活动的列表视图中添加项目 - Android Studio Add item in list view from a second Activity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM