Я пытаюсь изменить шаблон Master/Detail в Android Studio. Моя основная цель - попытаться правильно отобразить простой List<Obj>
, который я заполняю вручную в onCreate()
. Моя проблема в том, что дополнительные функции, которые должны быть переданы от ListActivity
до DetailActivity
(а затем переданы в Фрагмент), не проходят.Intents extras arent 'прошел в моем модифицированном шаблоне мастера/детали
Полный код here
Я подозреваю, что что-то не так с адаптером RecyclerView (и держатель), что я доработанного. Мне также не нравится использовать класс DummyContent.
Я бы также высказал мнение о том, лучше ли удалить этот класс DummyContent и создать собственный источник данных, или просто проще и удобнее в так называемой реальной жизни изменить существующий источник контента Dummy.
Если вы предпочитаете иметь дополнительные фрагменты кода, вставленные здесь, пожалуйста, дайте мне знать, заблаговременно за помощь.
public class SimpleItemRecyclerViewAdapter
extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> {
private final List<Obj> mValues;
public SimpleItemRecyclerViewAdapter(List<Obj> items) {
mValues = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.data_list_content, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.obj = mValues.get(position);
holder.name.setText(holder.obj.getName());
holder.image.setText(holder.obj.getImage());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mTwoPane) {
Bundle arguments = new Bundle();
arguments.putString(Keys.KLUCZ, holder.obj.getName()); // tutaj musze przeslac Id
DataDetailFragment fragment = new DataDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.data_detail_container, fragment)
.commit();
} else {
Context context = v.getContext();
Intent intent = new Intent(context, DataDetailActivity.class);
intent.putExtra(Keys.KLUCZ, holder.obj.getName());
Log.d("DataListActivity", "obj.getName = "+holder.obj.getName());
context.startActivity(intent);
}
}
});
}
@Override
public int getItemCount() {
return mValues.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final TextView name;
public final TextView image;
public final View mView;
public Obj obj;
public ViewHolder(View view) {
super(view);
mView = view;
name = (TextView) view.findViewById(R.id.id);
image = (TextView) view.findViewById(R.id.content);
}
}
И получающее активность:
if (savedInstanceState == null) {
// Create the detail fragment and add it to the activity
// using a fragment transaction.
Bundle arguments = new Bundle();
arguments.putString(Keys.KLUCZ,
getIntent().getStringExtra(Keys.KLUCZ));
DataDetailFragment fragment = new DataDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.add(R.id.data_detail_container, fragment)
.commit();
}