AQueryを使用してAPIからrecycleviewのデータを取得していますが、今はAPIのonclickからrecyclerviewアイテムのフラグメントを開きたいのですがどうすれば実装できますか? 私はInstagram appと同じことをやりたがっています。ホームページのように名前をクリックすると、別の断片のユーザーの詳細がすべて取得されます。Open Fragment APIを使用してRecyclerviewアイテムをオンクリックする
答えて
リサイクル業者の表示項目onClickで次の操作を行います。
ここで、fmはFragmentManagerオブジェクトで、新しいフラグメントの読み込みなど、フラグメントトランザクションを実行できます。
yfObjは、ロードするフラグメントクラスのオブジェクトです。
R.id.fragmentContainerは、フラグメントをロードするXMLファイルで宣言したコンテナレイアウトのIDです。
希望すると便利です。
私はRecyclerViewAdapterまたはMainFragmentクラスにOnClickListnerを置く必要がありますか?MainFragmentにAPIを置く場所はどこですか? – User16
リサイクル・ビュー項目レイアウトのルート・レイアウトのオブジェクトをアダプタに作成し、そこでクリックを処理できます。 –
APIについては、アクティビティ/フラグメント内のAPIを呼び出してそこからAPIのデータを読み込むことができると思います。そして、そのデータをアダプター・クラスに送って、リサイクラー・ビューをロードします。 –
//CouponFragment.java
public class CouponFragment extends Fragment implements CouponList.OnActionCompleted{
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
recyclerView = new RecyclerView(getActivity());
return recyclerView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayList<String> coupons = new ArrayList<>();
coupons.add("Tamil");
coupons.add("English");
coupons.add("Malay");
coupons.add("Chinese");
recyclerView.setAdapter(new CouponList(coupons,CouponFragment.this));
}
@Override
public void OnClick(Coupon coupon){
//new fragment
CouponDetails couponDetails = new CouponDetails();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_container, couponDetails);
//R.id.home_container is your FrameLayout id
transaction.addToBackStack("couponDetails");
transaction.commit();
}
}
cardview_coupon_info.xml
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/tools"
android:foreground="?android:attr/selectableItemBackground"
android:transitionName="coupon_info_card"
android:id="@+id/coupon_info_card"
android:clickable="true"
android:layout_margin="@dimen/item_margin"
card_view:cardElevation="6dp"
card_view:cardCornerRadius="4dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/coupon_description"
android:gravity="start"
android:layout_margin="4dp" />
</android.support.v7.widget.CardView>
CouponList.java(Recyclerviewアダプタ)
public class CouponList extends RecyclerView.Adapter<CouponList.ViewHolder> {
private ArrayList<String> coupons;
private OnActionCompleted callback;
public CouponList(ArrayList<String> coupons,OnActionCompleted callback)
{
this.coupons = coupons;
this.callback = callback;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_coupon_info,parent,false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.description.setText(coupons.get(position);
}
@Override
public int getItemCount() {
return coupons.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView description;
public ViewHolder(View itemView) {
super(itemView);
description = (TextView) itemView.findViewById(R.id.coupon_description);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String coupon = coupons.get(getAdapterPosition());
callback.OnClick(coupon);
}
}
public interface OnActionCompleted {
public void OnClick(Coupon coupon);
}
}
あなたはリサイクルビュー項目で複数のウィジェットをクリックするために簡単に実装するために、同様の活動でこれを使用することができます:)
- 1. recyclerview open activity navbar with clickアイテム
- 2. Open Additional Fragment
- 3. Open Fragmentアクティビティ
- 4. Realmデータベースのアイテムを使用してRecyclerViewがクラッシュする
- 5. サービスクラスを使用してRecyclerViewにアイテムを追加する
- 6. Preload StaggeredGridLayoutManagerを使用したRecyclerviewアイテム
- 7. リオーダーカスタムアダプターを使用したRecyclerviewアイテム
- 8. フラグメント内のRecyclerViewアイテムにカスタムフォントを適用
- 9. RecyclerViewを使用してAPIレベルで問題を解決する
- 10. Rest APIを使用してRecyclerViewアイテムを削除するにはどうすればよいですか?
- 11. フラグメントベースのViewPager(RecyclerViewアイテムとして)はヌルオブジェクトリファレンスを生成します
- 12. CursorLoaderを使用しているときに、RecyclerViewアイテムのカーソルをクリックします。
- 13. contentprovidersを使用しているときにrecyclerviewのアイテムをスワイプする方法
- 14. OnClickを使用してrecyclerviewのアイテムを削除しています。 Firebase android
- 15. Open Graph APIを使用してプログラムでFacebookページを作成
- 16. ダイアログを確認するアクションバーにすべてのアイテムをオンクリックします
- 17. MVPを使用してRecyclerViewからアイテムを挿入/削除する方法
- 18. recyclerviewアダプタのアイテムを変更する
- 19. RecyclerViewを使用している場合、Android YouTube APIのメモリリーク
- 20. 他のRecyclerViewアイテムからRecyclerViewにアイテムを追加する
- 21. ラリーAPIを使用してアイテムのランクを変更する
- 22. RecyclerViewはアイテムをオーバードローする
- 23. RecyclerViewのアイテムをクリックした後のフラグメントトランザクション
- 24. RecyclerViewでアイテムを削除する - Android
- 25. open Openoffice calcでPythonを使用してシステムコマンドを使用する
- 26. RecyclerViewのアイテムを追加するフラグメント
- 27. SharedServiceを使用してSharedServiceを使用してアイテムをアイテムにプッシュする
- 28. "RecyclerView.setHasFixedSize(boolean) 'はヌルオブジェクトリファレンスで" Recyclerview into fragment
- 29. AsyncTaskを使用してsqliteデータベースからデータをロードし、recyclerviewアイテムを表示する
- 30. Fragmentでintent.getExtras()を使用するには?
単に_FragmentTransaction_を使用できます。しかし、アダプタクラスからのオープンフラグメントは推奨されていませんので、リスナーを実装する必要があります。 – Piyush