2016-09-08 8 views
0

Android Studio에서 재고 마스터/세부 템플릿을 수정하려고합니다. 내 주요 목표는 올바르게 List<Obj>을 표시하고 올바르게 표시하는 것이며, 이는 수동으로 onCreate()에서 채 웁니다. 내 문제는 ListActivity에서 DetailActivity으로 전달 된 다음 (조각으로 전달 된) 추가 정보가 전달되지 않는 것입니다.인 텐트 엑스트라가 수정 된 마스터/세부 템플릿에 전달되지 않았습니다.

전체 코드 here

내가 약간 변형 한 RecyclerView 어댑터 (홀더)에 문제가있다 생각한다. 재고가없는 DummyContent 클래스도 마음에 들지 않습니다.

나는 또한이 DummyContent 클래스를 제거하고 자신의 데이터 소스를 만드는 것이 더 좋을지, 아니면 실제 삶에서 기존 더미 소스를 수정하는 것이 더 쉽고 편리하다는 의견을 제시하고 싶습니다.

더 많은 코드 스 니펫을 여기에 붙여 넣으려면 미리 알려 주셔서 감사합니다.

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(); 
    } 

답변

0

그것을 자신을 찾았 내가 잘못 내를 Obj 객체를 인스턴스화되었다

했다 :

mItem = new Obj(Keys.KLUCZ, "some string"); 

가 있어야한다 :

mItem = new Obj(getArguments().getString(Keys.KLUCZ), "Jakies nazwisko");