gpt4 book ai didi

java - 从另一个 Fragment 获取值,然后将 Items 添加到自定义 recyclerview

转载 作者:行者123 更新时间:2023-11-30 05:05:34 24 4
gpt4 key购买 nike

问题是添加方法据说是空的,我不知道为什么。我想要做的就是从费用 fragment 中获取值并将项目添加到自定义回收器 View ,项目的值是我在费用 fragment 中输入的值。

主界面Java代码如下:

package com.example.admin.test2;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.ArrayList;


/**
* A simple {@link Fragment} subclass.
*/
public class MainScreen extends Fragment {

private ArrayList<ExampleItem> mExampleList;

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;

// Spinner spinner;
EditText amountt;
EditText detailss;
EditText datee;

public MainScreen() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment

View view = inflater.inflate (R.layout.fragment_main_screen, container, false);

mExampleList = new ArrayList <ExampleItem>();
mExampleList.add(new ExampleItem(R.drawable.others, "", "", "ADD EXPENSES"));

mRecyclerView = view.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getContext());
mAdapter = new ExampleAdapter(mExampleList);

mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);

return view;
}


public void insertItem()
{
Bundle bundle = getArguments();
String deTails = bundle.getString("Details");
String aMount = bundle.getString("Amount");

mExampleList.add(0, new ExampleItem(R.drawable.food, "Food & Drink", ""+ deTails, "₱ " + aMount));
mAdapter.notifyDataSetChanged();
}
}

以下是值(value)来源的另一项 Activity :

package com.example.admin.test2;

import android.app.DatePickerDialog;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Expense extends Fragment {

private ArrayList<ExampleItem> mExampleList;

public Expense() {
// Required empty public constructor
}
//SPINNER
Spinner sp1;
CustomAdapter adapter;
String[] names = {"Food & Drink", "Shopping", "Transportation", "Home", "Bills & Fees", "Entertainment", "Healthcare", "Education", "Beauty", "Others"};
int[] images = {R.drawable.food, R.drawable.shopping, R.drawable.transportation, R.drawable.home, R.drawable.bills, R.drawable.entertainment, R.drawable.medical, R.drawable.education, R.drawable.beauty, R.drawable.others};

//DATE PICKER
private EditText mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;

FloatingActionButton fab;
EditText amounttt;
EditText detailsss;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate (R.layout.fragment_expense, container, false);

//spinner
sp1 = (Spinner)view.findViewById(R.id.customSpinner);

adapter = new CustomAdapter(getActivity(), names, images);
sp1.setAdapter(adapter);

//fab onClick - sending values to the recycler view
fab = (FloatingActionButton) view.findViewById(R.id.fabs);
detailsss = (EditText) view.findViewById(R.id.textDetailss) ;
amounttt = (EditText) view.findViewById(R.id.textAmountt);

fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int pos = sp1.getSelectedItemPosition();
String descrptn = detailsss.getText().toString();
String amouunt = amounttt.getText().toString();

Bundle bundle = new Bundle();
bundle.putString("Details", descrptn);
bundle.putString("Amount", amouunt);
bundle.putInt("Position", pos);

android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MainScreen ms = new MainScreen();
ms.setArguments(bundle);
ms.insertItem();
fragmentTransaction.replace(R.id.replaceLayout, ms);
fragmentTransaction.commit();
}
});

//date picker
mDisplayDate = (EditText) view.findViewById(R.id.datePick);

mDisplayDate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);

DatePickerDialog dialog = new DatePickerDialog(getActivity(),
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
mDateSetListener,
year, month, day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();

}
});

mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
//Calendar calendar = Calendar.getInstance();
//String currentDate = DateFormat.getDateInstance().format(calendar.getTime());

month = month + 1;
String date = month + "-" + day + "-" + year;
mDisplayDate.setText(date);
}
};

return view;
}

}

适配器代码如下:

package com.example.admin.test2;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {

private ArrayList<ExampleItem> mExampleList;

public static class ExampleViewHolder extends RecyclerView.ViewHolder
{
public ImageView mImageView;
public TextView mLabel;
public TextView mDetails;
public TextView mAmount;

public ExampleViewHolder(View itemView) {
super(itemView);

mImageView = itemView.findViewById(R.id.imageIcon);
mLabel = itemView.findViewById(R.id.textLabel);
mDetails = itemView.findViewById(R.id.textDetails);
mAmount = itemView.findViewById(R.id.textAmount);
}
}

public ExampleAdapter(ArrayList<ExampleItem> exampleList)
{
mExampleList = exampleList;
}

@NonNull
@Override
public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.customlist, parent, false);
ExampleViewHolder evh = new ExampleViewHolder(view);
return evh;
}

@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
ExampleItem currentItem = mExampleList.get(position);

holder.mImageView.setImageResource(currentItem.getmImageResource());
holder.mLabel.setText(currentItem.getMlabel());
holder.mDetails.setText(currentItem.getMdetails());
holder.mAmount.setText(currentItem.getMamount());
}

@Override
public int getItemCount() {
if (mExampleList == null)
return 0;
else
return mExampleList.size();
}
}

并且,以下是 Item Java 代码:

package com.example.admin.test2;

public class ExampleItem {

private int mImageResource;
private String mlabel;
private String mdetails;
private String mamount;

public ExampleItem(int imageResource, String label, String details, String amount)
{
mImageResource = imageResource;
mlabel = label;
mdetails = details;
mamount = amount;
}

public int getmImageResource()
{
return mImageResource;
}

public String getMlabel() {
return mlabel;
}

public String getMdetails() {
return mdetails;
}

public String getMamount() {
return mamount;
}


}

完整代码及错误请引用此链接(因为整个代码放不下超过30000字):https://textuploader.com/15s40

最佳答案

对我来说,它也不是那样工作的。我建议您在适配器中创建一个直接修改适配器内部列表的方法。所以不要这样做:

  mExampleList.add(0, new ExampleItem(R.drawable.food, "Food & Drink", ""+ deTails, "₱ " + aMount));
mAdapter.notifyDataSetChanged();

在您的适配器中,您有一个类似的方法:

public void add (ExampleItem itemToAdd) {
mExampleList.add(itemToAdd);
notifyDataSetChanged();
}

在你的 Activity 中:

mAdapter.add(new ExampleItem(R.drawable.food, "Food & Drink", ""+ deTails, "₱ " + aMount));

关于java - 从另一个 Fragment 获取值,然后将 Items 添加到自定义 recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com