我想弄清楚如何显示捆绑数据,我已将碎片显示在RecyclerView中。在我的活动的onClick方法中,我从用户获得输入并将值包装在一个Bundle中。然后我将它发送到要在RecyclerView中显示的片段。我有点难以理解如何设置我的RecyclerView适配器来显示Bundle数据任何帮助将不胜感激。如何在碎片中显示捆绑数据并在RecyclerView中显示
这是我的活动代码
public class OwesActivity extends AppCompatActivity
{
private Button okButton;
private EditText nameEditText;
private EditText amountEditText;
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_owes);
spinner = (Spinner)findViewById(R.id.spinner);
nameEditText = (EditText)findViewById(R.id.name_edit_text);
amountEditText = (EditText)findViewById(R.id.amount_edit_text);
okButton = (Button)findViewById(R.id.okButton);
okButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (isInputEmpty())
{
}
else
{
Bundle extras = new Bundle();
extras.putString("nameKey", nameEditText.getText().toString());
extras.putString("amountKey", amountEditText.getText().toString());
Fragment fragment;
switch (spinner.getSelectedItemPosition()) //value of spinner determines which list the extras go to.
{
case 0:// Owes Me
fragment = new OwesMeFragment();
fragment.setArguments(extras);
break;
case 1: // I Owe
fragment = new OweFragment();
fragment.setArguments(extras);
break;
default:
break;
}
startNewActivity();
}
}
});
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner_choices, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
public boolean isInputEmpty()
{
if(nameEditText.getText().toString().isEmpty()||
amountEditText.getText().toString().isEmpty())
{
Toast.makeText(this, "Field cannot be empty", Toast.LENGTH_SHORT).show();
return true;
}
else
{
return false;
}
}
public void startNewActivity()
{
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
这里是片段
public class OwesMeFragment extends Fragment
{
public OwesMeFragment()
{
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
//Inflate the view for this fragment
View view = inflater.inflate(R.layout.fragment_owe, container, false);
Bundle extras = this.getArguments();
if(extras != null)
{
String nameExtra = extras.getString("nameKey");
String amountExtra = extras.getString("amountKey");
}
//get a reference to the recyclerView
RecyclerView oweRecyclerView = (RecyclerView)view.findViewById(R.id.owe_recycler_view);
//set the layoutManager
oweRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
}
最后这里的适配器(不完全)
public class MyViewHolder extends RecyclerView.ViewHolder
{
public TextView name;
public TextView amount;
public MyViewHolder(View view)
{
super(view);
name = (TextView)view.findViewById(R.id.name_title);
amount = (TextView)view.findViewById(R.id.amount_title);
}
}
//Inflate listRow layout
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int ViewType)
{
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.payup_list_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position)
{
}
@Override
public int getItemCount()
{
return 0;
}
}
谢谢!这真的帮助了我。 – Ch1bz