Android Studio で在庫のマスター/詳細テンプレートを変更しようとしています。List<Obj>
私の主な目標は、単純なを適切に表示しようとすることonCreate()
です。ListActivity
私の問題は、から渡されるべきDetailActivity
(そしてフラグメントに渡されるべき)のエクストラが渡されないことです。
完全なコードはこちら
私が修正した 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();
}