RecyclervView/ClickListener/Retrofit2実装した。

前回に引き続きClick機能をつけたもの作りました。

コードはこちら

Interface class

public interface OnItemClickListener{
    void onItemClick(View view, int position);
}


RecyclerView Adapter class

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {


    private List<Shop> resultData;
    private Context mContext;
    private int rowLayout;
    private OnItemClickListener mClickListener;

    public CustomAdapter(List<Shop> resultData, int rowLayout, Context context) {
        this.resultData = resultData;
        this.rowLayout = rowLayout;
        this.mContext = context;

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(rowLayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder viewholder, final int position) {
        viewholder.item_text.setText(resultData.get(position).getName());
        Picasso.with(mContext).load(resultData.get(position).getPhoto().getMobile().getS())
                .into(viewholder.item_pic);

    }

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

    public void setmClickListener(OnItemClickListener mClickListener) {
        this.mClickListener = mClickListener;
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView item_text;
        private ImageView item_pic;

        public ViewHolder(View itemView) {
            super(itemView);
            item_text = (TextView)itemView.findViewById(R.id.item_text);
            item_pic = (ImageView)itemView.findViewById(R.id.item_pic);
            itemView.setOnClickListener(this);


        }

        @Override
        public void onClick(View v) {
            mClickListener.onItemClick(v, getAdapterPosition());
        }
    }

}

MainFragment class

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        rManager = new InternetManager();
        getGourmetData();
        mRecyclerView = (RecyclerView)view.findViewById(R.id.recycleView);





    }



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


        return inflater.inflate(R.layout.activity_main_fragment, container, false);
    }

    private void bindViews() {
        mRecyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager(layoutManager);
        adapter = new CustomAdapter(shops, R.layout.activity_custom_items, getActivity());
        mRecyclerView.setAdapter(adapter);
        adapter.setmClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                DetailActivity detailFragment = new DetailActivity();
                Shop shopInfo = shops.get(position);
                Bundle bundle = new Bundle();
                bundle.putString("title", shopInfo.getName());
                bundle.putString("address", shopInfo.getAddress());
                bundle.putString("catches", shopInfo.getCatch());
                bundle.putString("access", shopInfo.getAccess());
                bundle.putString("open", shopInfo.getOpen());
                bundle.putString("close", shopInfo.getClose());
                bundle.putString("wifi", shopInfo.getWifi());
                bundle.putString("private", shopInfo.getPrivateRoom());
                bundle.putString("card", shopInfo.getCard());
                bundle.putString("about", shopInfo.getOtherMemo());
                bundle.putString("budget", shopInfo.getBudget().getAverage());
                bundle.putString("photo", shopInfo.getPhoto().getMobile().getL());
                bundle.putString("url", shopInfo.getUrls().getMobile());

                detailFragment.setArguments(bundle);

                FragmentManager fragmentManager = getActivity().getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.activity_main, detailFragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

    }





    private void getGourmetData(){
        String shinsaibashiCode = "Y315";


        String json = "json";
        final Call<ShopData> requestData = rManager.getApiInterface().getShopData("APIキー",
                shinsaibashiCode, json);

        requestData.enqueue(new Callback<ShopData>() {
            @Override
            public void onResponse(Call<ShopData> call, Response<ShopData> response) {
               shopList = response.body().results.getShop();
               shops = shopList;
                bindViews();
            }

            @Override
            public void onFailure(Call<ShopData> call, Throwable t) {
                Log.e("Restaurants","Error" + t.getMessage());
                Toast.makeText(getActivity().getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();

            }
        });



    }

f:id:MrRoy:20180312013752p:plain:w250:h350
みたいな感じです。
ただRunするとRecyclerView: No adapter attached; skipping layoutと表示されるのでなぜかはわからない

とりあえず思った通りに形にすることができた。
サービスを何で作ったらいいのか迷ってる。Androidサーバーはみんな何使ってるの?
Web系も触りたいが、、早くエンジニアとして働いてサービス開発したい。

ついでにこのアプリのGitHubも載せておきます。

github.com

ではまた!!