私は、リストビューの形式でリサイクラービューを持つようにしようとしていますし、私は、リストの下に詳細を表示するフラグメントを設定したいAndroid:リサイクラレイアウトアダプタでフラグメントを動的に埋め込むにはどうすればよいですか?
これは
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginTop="2dp"
android:id ="@+id/relative_layout_text"
>
<ImageView
android:layout_width="55dp"
android:layout_height="55dp"
android:id="@+id/image_view_food_image"
android:layout_alignParentLeft="true"
android:background="@drawable/common_google_signin_btn_icon_dark_normal"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear_layout_text"
android:layout_toRightOf="@+id/image_view_food_image">
<TextView
android:id="@+id/text_view_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="19dp"
android:textStyle="bold"
android:textColor="@color/colorTitle"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/text_view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fragments"
android:layout_below="@+id/linear_layout_text"></FrameLayout>
</RelativeLayout>
とHERESにどのように私のアダプタのレイアウトであります私は私のフラグメントのためのアダプター
public class FirebaseAdapter extends RecyclerView.Adapter<FirebaseAdapter.MyViewHolder> {
private int lastPosition = -1;
private View views ;
private List<Foods> FoodArray = new ArrayList<>();
private Context mContext ;
private ArrayList<String> itemsDesc = new ArrayList<>();
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView title,name;
public ImageView foodImage;
public RelativeLayout relativeLayout;
public FrameLayout frameLayout;
public MyViewHolder(View view) {
super(view);
title = (TextView) view.findViewById(R.id.text_view_title);
name = (TextView) view.findViewById(R.id.text_view_name);
foodImage = (ImageView) view.findViewById(R.id.image_view_food_image);
relativeLayout = (RelativeLayout) view.findViewById(R.id.relative_layout_text);
frameLayout = (FrameLayout) view.findViewById(R.id.fragments);
views = view;
}
}
public FirebaseAdapter(Context context,List<Foods> Foods){
this.FoodArray = Foods;
this.mContext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.menu_list, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
holder.title.setText(FoodArray.get(position).getTitle());
holder.name.setText(FoodArray.get(position).getName());
itemsDesc.add(FoodArray.get(position).getTitle());
itemsDesc.add(FoodArray.get(position).getName());
itemsDesc.add(FoodArray.get(position).getURL());
DownloadImage Downloader = new DownloadImage(holder.foodImage);
Downloader.execute(FoodArray.get(position).getURL());
setAnimation(holder.relativeLayout, position);
Fragment blankFragment = new BlankFragment();
Bundle bundle = new Bundle();
bundle.putStringArrayList("Food",itemsDesc);
blankFragment.setArguments(bundle);
((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction()
.add(holder.frameLayout.getId(),blankFragment,"BlankFragment").addToBackStack(null).commit();
}
//this is to download async
public class DownloadImage extends AsyncTask<String,Void,Bitmap>{
private ImageView mImageView;
public DownloadImage(ImageView imageView){
this.mImageView = imageView;
}
//this is the code for downloading the image
@Override
protected Bitmap doInBackground(String ... url){
Bitmap Image = null;
try{
InputStream is = new URL(url[0]).openStream();
Image = BitmapFactory.decodeStream(is);
}catch(MalformedURLException ex){
ex.printStackTrace();
}
catch(IOException ex){
ex.printStackTrace();
}
return Image;
}
@Override
protected void onPostExecute(Bitmap result) {
if (result != null) {
mImageView.setImageBitmap(result);
}
}
}
private void setAnimation(View viewToAnimate, int position)
{
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(viewToAnimate.getContext(), android.R.anim.slide_in_left);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
@Override
public int getItemCount(){return FoodArray.size();}
}
と相続人のコードで私のフラグメントを開始
public class BlankFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_blank,container,false);
TextView title = (TextView)view.findViewById(R.id.text_view_title);
TextView description = (TextView)view.findViewById(R.id.text_view_description);
ImageView foodImage = (ImageView) view.findViewById(R.id.image_view_big_food_image);
ArrayList<String> foods = getArguments().getStringArrayList("Food");
title.setText(foods.get(0));
description.setText(foods.get(1));
DownloadImage Downloader = new DownloadImage(foodImage);
Downloader.execute(foods.get(2));
return view;
}
public class DownloadImage extends AsyncTask<String,Void,Bitmap> {
private ImageView mImageView;
public DownloadImage(ImageView imageView){
this.mImageView = imageView;
}
//this is the code for downloading the image
@Override
protected Bitmap doInBackground(String ... url){
Bitmap Image = null;
try{
InputStream is = new URL(url[0]).openStream();
Image = BitmapFactory.decodeStream(is);
}catch(MalformedURLException ex){
ex.printStackTrace();
}
catch(IOException ex){
ex.printStackTrace();
}
return Image;
}
@Override
protected void onPostExecute(Bitmap result) {
if (result != null) {
mImageView.setImageBitmap(result);
}
}
}
だから私の現在のコードで、私はこの
ようになり、データを期待しています。しかし、私はので、私はそれを作る方法についてはわからないよ、この代わりに
を得ました私は私の期待した結果を得ることができます
お願いしてありがとうございます。
に1を加算することでスタックします。あなたは大丈夫cricket_007 @ CardView –
のようなルックスを描いた何私はアンドロイドの開発に新しいですし、フラグメントがそれを行うだろう、私ものの – Annonymous177
フラグメントは、リストに表示することができるかもしれませんが、そのよう –