2016-09-03 12 views
-1

新しいフラグメントをポップアップして再利用する方法(選択したアイテムによって異なる)ListViewのアイテムをクリックすると、すべてのヘルプはListViewフラグメントタブでクリックしたアイテムからフラグメント(依存するアイテム)を開き、再利用する方法

please refer to the screenshot attached

をいただければ幸い、私はすでに

代わりOnClickListene ます。public void onItemClick(AdapterView親、ビュービュー、int型の位置、長いID)の)OnItemClickListenerを(使用しようとしたが、それはどちらか動作していません

おかげ

-- Fragment ListView Class-- 


public class WorkOutFragmentForearm extends Fragment { 

    private String[] exercisesForearmNames; private String[] exerciseForearmType; 
    private String[] exerciseForeamNumber; 

    private int[] image = { R.drawable.forearm, 

    }; 

    private ArrayList<WorkOutListNameListExercises> mForearmsArray; 

    private RecyclerView mForearmRecyclerView; private ForearmAdapter mAdapter; 

    @Override public void onCreate(Bundle savedInstanceState) { 

     Resources res = getResources(); 

     // Initialize array from info form XML strings exercisesForearmNames = 
     res.getStringArray(R.array.exercisesForearmNames); exerciseForearmType = 
     res.getStringArray(R.array.exerciseForearmType); exerciseForeamNumber = 
     res.getStringArray(R.array.exerciseForeamNumber); 

     mForearmsArray = new ArrayList<>(); 

     for (int i = 0; i < exercisesForearmNames.length; i++) { 
     WorkOutListNameListExercises s = new WorkOutListNameListExercises(); 

      s.setName(exercisesForearmNames[i]); 
      s.setExerciseType(exerciseForearmType[i]); 
      s.setExerciseNumber(exerciseForeamNumber[i]); s.setImageId(image[i]); 
      mForearmsArray.add(s); } 

     super.onCreate(savedInstanceState); 

    }// end Main 

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup 
    container, Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.workout_recycler_forearm, container, 
     false); mForearmRecyclerView = (RecyclerView) 
     view.findViewById(R.id.recycler_view); 

     mForearmRecyclerView.addItemDecoration(new 
     SimpleDividerItemDecoration(getResources())); 
     mForearmRecyclerView.setLayoutManager(new 
     LinearLayoutManager(getActivity())); updateUI(); 

     // ------------------------------------------------------------------------- 
     ---------- // When Back Button is clicked 
     view.setFocusableInTouchMode(true); view.requestFocus(); 
     view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean 
     onKey(View v, int keyCode, KeyEvent event) { 

       if (keyCode == KeyEvent.KEYCODE_BACK) { 

        // Display Drawer when back button is clicked if drawer not // display 
        not go back without FragmentTransaction Code 
        MainActivity.mDrawerLayout.openDrawer(Gravity.LEFT); 

        return true; } else { 

        return false; } } }); 

     return view; 

    }// end Main 

    private void updateUI() { mAdapter = new ForearmAdapter(mForearmsArray); 
    mForearmRecyclerView.setAdapter(mAdapter); } 

    // Inner Class private class ForearmHolder extends RecyclerView.ViewHolder { 

     private WorkOutListNameListExercises mForearm; public ImageView mImageView; 
     public TextView mNameTextView; public TextView mTypeNumberTextView; 

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


      mImageView = (ImageView) itemView.findViewById(R.id.imageView); 
      mNameTextView = (TextView) 
      itemView.findViewById(R.id.textview_name); mTypeNumberTextView = 
      (TextView) itemView.findViewById(R.id.textview_type_number); 




      itemView.setOnClickListener(new View.OnClickListener() { 

       @Override public void onClick(View view) { 

Bundle bundle = new Bundle(); 

       if (mForearm.getName().equals(exercisesForearmNames[0])) { 

FragmentTransaction fragmentTransaction = 
getActivity().getSupportFragmentManager().beginTransaction(); Fragment 
fragmentItem1 = new FragmentItem1(); fragmentItem1.setArguments(bundle); 
fragmentTransaction.add(R.id.my_frame_list, fragmentItem1); 
fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); 


        Toast.makeText(getActivity(),mForearm.getName() + "Item 1", 
        Toast.LENGTH_SHORT).show(); } 





       });//end View.OnClickListener 

     }// end Method 

     public void bindData(WorkOutListNameListExercises s) { mForearm = s; 

      mImageView.setImageResource(s.getImageId()); 
      mNameTextView.setText(s.getName()); 
      mTypeNumberTextView.setText(s.getExerciseType() + ":" + 
      s.getExerciseNumber()); 

     } 

    }// end Inner Class 

    // Inner Class private class ForearmAdapter extends 
    RecyclerView.Adapter<ForearmHolder> 

    { private ArrayList<WorkOutListNameListExercises> mForearmsArray; 

     public ForearmAdapter(ArrayList<WorkOutListNameListExercises> 
     WorkOutListNameListExercises) { mForearmsArray = 
     WorkOutListNameListExercises; 

     } 

     @Override public ForearmHolder onCreateViewHolder(ViewGroup parent, int 
     viewType) { LayoutInflater layoutInflater = 
     LayoutInflater.from(getActivity()); View view = 
     layoutInflater.inflate(R.layout.workout_items_list_info, parent, false); 
     return new ForearmHolder(view); 

     } 

     @Override public void onBindViewHolder(ForearmHolder holder, int position) { 

      WorkOutListNameListExercises s = mForearmsArray.get(position); 
      holder.bindData(s); 

     } 

     @Override public int getItemCount() { return mForearmsArray.size(); 

     } }// end Inner Class 

}// end Class 

WorkOutListNameListExercises.java

public class WorkOutListNameListExercises { private String ExreciseName; private 
String ExerciseType; private String ExerciseNumber; private int ExerciseImageId; 

    public String getName() { return ExreciseName; } 

    public void setName(String ExreciseName) { this.ExreciseName = ExreciseName; } 

    public String getExerciseType() { return ExerciseType; } 

    public void setExerciseType(String ExerciseType) { this.ExerciseType = 
    ExerciseType; } 

    public String getExerciseNumber() { return ExerciseNumber; } 

    public void setExerciseNumber(String ExerciseNumber) { this.ExerciseNumber = 
    ExerciseNumber; } 

    public int getImageId() { return ExerciseImageId; } 

    public void setImageId(int ExerciseImageId) { this.ExerciseImageId = 
    ExerciseImageId; } } 
+0

ようこそスタックオーバーフロー!読みやすくするためにコードを書式設定し、スクロールを排除して質問を改善することができます。 [最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)をお読みください。あなたのコードが何も特別な問題であなたの正確な問題を示すとき、あなたはボランティアしてあなたを助ける人たちに敬意を表しています。 – zhon

+0

は、断片を再利用することを意味するものではありません。 tab、listview、listviewアイテムのフラグメントや、すべてのlistviewアイテムに再利用されるフラグメントに使用されるフラグメントを再利用しますか? –

+0

@Darshan Miskin ListViewのItemがクリックされたときにフラグメントを開いて、listViewの各アイテムに対して同じフラグメントを再利用したいのですが可能ですか?または、各アイテムにフラグメントが必要ですか?ありがとう – Juancho92

答えて

0

大丈夫です!したがって、あなたはrecyclerviewを使用していますし、itemviewではonClickListenerも追加しています。またそこにバンドルを作成しています。あなたはすでにそこに99%です!

あなたはバンドルに何も追加していません。そこにいくつかの値を追加するには

bundle.putString("key1","value1"); 

を行うあなたは、私たちはその第1、第2または3番目の項目かどうかをチェックする必要はありません配列だけでなく、putStringArray()putStringArrayList()

を使用してのArrayListを渡すことができますユーザーがクリックしています。 bindData()で既にこれを行います。この位置を使用して、適切な値をフラグメントに渡します。したがって、私たちのコードはこのようになります。

public void bindData(WorkOutListNameListExercises s) { 

itemView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     Bundle bundle = new Bundle(); 
     bundle.putString("forearmName",s.getName()); 
     bundle.putString("forearmType",s.getType()); 
     bundle.putString("forearmNumber",s.getNumber()); 

     FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
     Fragment fragmentItem1 = new FragmentItem1(); 
     fragmentItem1.setArguments(bundle); 
     fragmentTransaction.add(R.id.my_frame_list, fragmentItem1); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 

     //Your Toast message! 
    } 
    } 
} 

今ではFragmentItem1で再利用します。 onCreateでこれを行う

private String exercisesForearmName, exerciseForearmType, exerciseForeamNumber; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
Bundle bundle=this.getArguments(); 
exercisesForearmNames=bundle.getString("forearmName"); 
exerciseForearmType=bundle.getString("forearmType"); 
exerciseForearmNumber=bundle.getString("forearmNumber"); 
} 

今ちょうどonCreateView()

が完了してにあなたが予定のビューに値を割り当てます。お役に立てれば。

関連する問題