java - 如何从另一个 Activity 的不同回收 View 开始创建新的回收 View

标签 java android android-studio

任何人都可以向我解释如何创建一个新的回收站并将项目添加到从另一个 Activity 内的另一个回收站 View 中查看的回收站 View 中吗?

基本上,我想创建一个购物车,目前,我从 Firebase 数据集中检索数据并将其显示在回收 View 中,但现在我想将此数据发送到购物车(购物车位于里面)另一个 Activity ),我能够发送数据,但我无法理解如何在这个新 Activity 的新回收 View 中显示数据。我需要这个,因为我想查看添加到购物 list 中的商品,以便我可以付款。

下面我将附上一张照片来更好地解释自己。

我的问题是我不明白如何在新 Activity 中再次将发送的数据添加到回收 View 。

我是 Android 新手,所以这是我第一次做这个事情。

预先感谢您的帮助。

enter image description here

我的代码:

SearchItemsActivity:

    package com.example.ipill;

    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;


    import android.content.Context;
    import android.content.Intent;
    import android.nfc.Tag;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.firebase.ui.database.FirebaseRecyclerAdapter;
    import com.google.firebase.database.DatabaseReference;
    import com.google.firebase.database.FirebaseDatabase;
    import com.google.firebase.database.Query;

    import java.util.ArrayList;
    import java.util.List;


    public class FirebaseSearch extends AppCompatActivity {

    private EditText mSearchField;
    private ImageButton mSearchBtn;
    private ImageButton AddToCart;
    private ImageButton Cart;

    String searchText="";

    private RecyclerView mResultList;
    private DatabaseReference mUserDatabase;




    private static ArrayList<Users> arrayList = new ArrayList<>();
    public static int cart_count = 0;


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

        mUserDatabase = FirebaseDatabase.getInstance().getReference("Users");

        mSearchField = findViewById(R.id.search_field);
        mSearchBtn   = findViewById(R.id.search_btn);
        mResultList  = findViewById(R.id.result_list_cart);
        AddToCart    = findViewById(R.id.imageButton2);
        Cart         = findViewById(R.id.cartButton);

        mResultList.setHasFixedSize(true);
        mResultList.setLayoutManager(new LinearLayoutManager(this));

        mSearchBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                searchText = mSearchField.getText().toString();
                firebaseUserSearch(searchText);
            }
        });

        Cart.setOnClickListener(new View.OnClickListener() {
            private Object Tag="Activity";

            @Override
            public void onClick(View v) {
                if (cart_count < 1) {

                } else {
                    startActivity(new Intent(FirebaseSearch.this, CartActivity.class));
                }
            }
        });
     }



       private void firebaseUserSearch(String searchText) {
        Toast.makeText(FirebaseSearch.this, "Started Search", Toast.LENGTH_LONG).show();
        Query firebaseSearchQuery = 
        mUserDatabase.orderByChild("Name").startAt(searchText).endAt(searchText + "\uf8ff");
        FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new             
        FirebaseRecyclerAdapter<Users, UsersViewHolder>(
                Users.class,
                R.layout.list_layout,
                UsersViewHolder.class,
                firebaseSearchQuery
        ) {
            @Override
            protected void populateViewHolder(UsersViewHolder viewHolder, Users model, int position) {
                viewHolder.getDetails(model.getName(), model.getSurname(),model.getPrice());
                viewHolder.setDetails(model.getName(), model.getSurname(),model.getPrice());
            }
        };
        mResultList.setAdapter(firebaseRecyclerAdapter);
    }


    @Override
    protected void onStart() {
        super.onStart();
        invalidateOptionsMenu();
    }

    // View Holder Class
    public static class UsersViewHolder extends RecyclerView.ViewHolder {
        View mView;
        String nome;
        String surname;
        Long prezzo;

        public UsersViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
            ImageButton addToCart = (ImageButton)mView.findViewById(R.id.imageButton2);
            addToCart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    cart_count++;
                    Context context = v.getContext();
                    Intent intent = new Intent(context, CartActivity.class);
                    intent.putExtra("Name",nome);
                    intent.putExtra("Surname",surname);
                    intent.putExtra("Prezzo",Long.toString(prezzo));
                    context.startActivity(intent);
                }
            });
        }

        public void getDetails(String name,String cognome,Long price){
            nome=name;
            surname=cognome;
            prezzo=price;
        }


        public void setDetails(String name, String surname, Long price) {

            TextView user_name = (TextView) mView.findViewById(R.id.name_text);
            TextView user_surname = (TextView)mView.findViewById(R.id.status_text);
            TextView user_price = (TextView)mView.findViewById(R.id.price);

            user_name.setText(name);
            user_surname.setText(surname);
            user_price.setText(Long.toString(price));

            }
        }
    }

我接收数据并要创建回收 View 的第二个 Activity

       package com.example.ipill;

       import android.content.Context;
       import android.os.Build;
       import android.os.Bundle;
       import android.util.Log;
       import android.view.View;
       import android.widget.Button;
       import android.widget.LinearLayout;
       import android.widget.TextView;
       import android.widget.Toast;
       import android.widget.Toolbar;
    
       import androidx.annotation.RequiresApi;
       import androidx.appcompat.app.AppCompatActivity;
       import androidx.recyclerview.widget.LinearLayoutManager;
       import androidx.recyclerview.widget.RecyclerView;

       import java.util.ArrayList;
       import java.util.Collection;
   

      public class CartActivity extends AppCompatActivity {

       public static TextView grandTotal;
       public static int grandTotalplus;
       // create a temp list and add cartitem list
       public static ArrayList<Users> temparraylist;
       RecyclerView cartRecyclerView;

       Button proceedToBook;
       Context context;
       String name, surname, price;
       private static ArrayList<Users> arrayList2 = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);
        context = this;
        temparraylist = new ArrayList<>();
        proceedToBook = findViewById(R.id.buyNow);
        grandTotal = findViewById(R.id.TotalPrice);

        cartRecyclerView = findViewById(R.id.cartList);

        String passedArg = getIntent().getExtras().getString("Name");
        name = passedArg;


        String passedArg2 = getIntent().getExtras().getString("Surname");
        surname = passedArg2;



        String passedArg3 = getIntent().getExtras().getString("Price");
        price = passedArg3;

        System.out.println("DATA"+name+surname+price);

        cartRecyclerView.setHasFixedSize(true);
        cartRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    }

最佳答案

您可以重新使用购物车适配器,只需在新的 Activity 中实现一个 recyclerView 并创建购物车适配器对象并将其设置到新的 recyclerView 中即可完成

关于java - 如何从另一个 Activity 的不同回收 View 开始创建新的回收 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60301303/

相关文章:

java - 使用 Java 8 在文件中查找模式

java - 类型与类型变量不兼容

android - 使用 Fabric 找不到符号导入 com.twitter.sdk.android.Twitter

java - 关于多线程java应用程序的时序图

java - Spring 按名称 Autowiring

java - 如何在recyclerview适配器中使用getItematposition()作为ListView

android - 在目前不支持的平板电脑上安装 Sip api?

android - 使用 execvp 子调用转储 logcat

android - 为什么 build.gradle 看起来不像 Groovy?

java - 从 Android 存储访问框架中选取时文件是只读的