Как я могу включить recyclerView (содержит список элементов) в одно действие, которое имеет другие представления - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу добиться чего-то подобного ниже, мой список данных поступает с спокойного сервера.Все работает, кроме того, что список пуст.Я использовал следующее;* Recyclerview Adapter * Создано pojo для элементов списка, журналы показывают, что данные поступают с сервера, за исключением того, что список не заполнен

enter image description here

// TransactionsFragment

public class TransactionsFragment extends Fragment {
    View rootView;
    RecyclerView recyclerView;
    String transaction_amount;
    String transaction_date_created;
    public String authToken;


    public TransactionsFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_transactions_list, container, false);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView = rootView.findViewById(R.id.rv_transactions);
        recyclerView.setLayoutManager(linearLayoutManager);

        TransactionListAdapter transactionListAdapter = new TransactionListAdapter(getContext(), getTransactions());
        recyclerView.setAdapter(transactionListAdapter);
        transactionListAdapter.notifyDataSetChanged();

        return rootView;
    }

    private List<Transaction> getTransactions() {
        List<Transaction> transactionList = new ArrayList<>();

/ ........

            @Override
            public void onNext(List<Transaction> transactions) {
                Integer transactionSize = transactions.size();
                for (int i =0;i<transactionSize;i++) {
                    transaction_amount = transactions.get(i).getAmount();
                    transaction_date_created = transactions.get(i).getDateCreated();
                   transactionList.add(new Transaction(transactions.get(i).getId(),null,transactions.get(i).getAmount(), transactions.get(i).getDateCreated(), transactions.get(i).getAccount()));

                }
                /// Data is shown here after running the app so it tells me that we are getting response from the server
                Toast.makeText(getActivity(), "Transaction Date Created: " + transaction_date_created + "!", Toast.LENGTH_LONG).show();


            }


            @Override
            public void onError(Throwable e) {

                if (e instanceof HttpException) {
                    HttpException response = (HttpException) e;
                    int code = response.code();
                    String msg = response.message();
                    Toast.makeText(getActivity(), "Transaction Error message: " + msg + "!", Toast.LENGTH_LONG).show();

                }
            }

            @Override
            public void onComplete() {

            }
        });
//...
        return transactionList;

    }
}

// .. Открытый класс TransactionListAdapter TransactionListAdapter extends RecyclerView.Adapter {private List TransactionsList;закрытый контекст mContext;

        public TransactionListAdapter(Context context, List<Transaction> transactions) {
            this.mContext = context;
            this.transactionList = transactions;
        }

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

        @Override
        public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
            if (holder instanceof TransactionListAdapter.OriginalViewHolder) {
                TransactionListAdapter.OriginalViewHolder view = (TransactionListAdapter.OriginalViewHolder) holder;

                Transaction transaction = transactionList.get(i);
            view.tvTransactionAmount.setText(transaction.getAmount());
            view.tvTransactionDateCreated.setText(transaction.getDateCreated());
            }
        }
        @Override
        public int getItemCount() {
            return transactionList.size();
        }

        public class OriginalViewHolder extends RecyclerView.ViewHolder{
            ImageView imgTransactionType;
            TextView tvTransactionName, tvTransactionAmount, tvTransactionDateCreated, tvDefaultCurrency, getTvTransactionUSD;
            public OriginalViewHolder(View itemView) {
                super(itemView);

                tvTransactionDateCreated = itemView.findViewById(R.id.tv_transaction_date_created);
                tvTransactionAmount = itemView.findViewById(R.id.tv_transaction_amount);

            }
        }

}

// .. Открытый класс MainActivity Открытый класс MainActivity расширяет возможности AppCompatActivity

    View parent_view;





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        checkConnection();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        }

        setContentView(R.layout.activity_home);


        initiateViews();

        Fragment transFragment = new TransactionsFragment();
        final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.transactions_frame_container, transFragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

    private void initiateViews() {
        parent_view = (CoordinatorLayout)findViewById(R.id.home_container);
        home_container_id = R.id.frame_container;
    }



    private void loadFragment(Fragment fragment, Integer container_id) {
        // create a FragmentManager
        FragmentManager fm = getSupportFragmentManager();
// create a FragmentTransaction to begin the transaction and replace the Fragment
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
// replace the FrameLayout with new Fragment
        fragmentTransaction.replace(container_id, fragment);
        fragmentTransaction.commit(); // save the changes
    }

}

//..fragment_transactions_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/grey_10" />

        <View
            android:layout_width="0dp"
            android:layout_height="@dimen/spacing_middle" />

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/rv_transactions"
        android:scrollbars="vertical"
        android:scrollingCache="true"/>

</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...