通过回收者视图项目的位置以开启新的活动

时间:2015-07-03 10:20:13

标签: android android-recyclerview

如何使用intent开始新活动来传递项目的位置? 我想开始一个名为single的新活动,它相应地显示电影的评级。请帮助 过去两天我一直在尝试这个。

以下是代码:

public class NowPlaying extends Fragment {

    private static final String TAG = NowPlaying.class.getSimpleName();

    // Movies json url
    private static final String url = "http://private-8149-themoviedb.apiary-mock.com/3/movie/now_playing?api_key=";
    private ProgressDialog pDialog;
    private List<NowPlayingInfo> bottom = new ArrayList<NowPlayingInfo>() ;

    NowPlayingAdapter adapter;
    RecyclerView recyclerView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.activity_main, container, false);
        ActionBar toolbar = ((AppCompatActivity) getActivity()).getSupportActionBar();
        toolbar.setTitle("Now playing");

        recyclerView = (RecyclerView) v.findViewById(R.id.cardList);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(linearLayoutManager);

        adapter = new NowPlayingAdapter(getActivity(), bottom);
        recyclerView.setAdapter(adapter);

        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Loading...");
        pDialog.show();

        adapter.SetOnItemClickListener(new NowPlayingAdapter.OnItemClickListener() {

            @Override
            public void onItemClick(View v, int position) {

                    // do something with position
                    Intent i = new Intent(v.getContext(), Single.class);

                    //pass the position of the item to single class
                    v.getContext().startActivity(i);
            }
        });

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        try {

                            JSONArray jsonArray = response.getJSONArray("results");
                            for (int i = 0; i < jsonArray.length(); i++) {

                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                NowPlayingInfo trailer = new NowPlayingInfo();
                                trailer.setTitle(jsonObject.getString("original_title"));

                                String iss = "http://image.tmdb.org/t/p/w500" + jsonObject.getString("poster_path") ;
                                trailer.setImage(iss);
                                bottom.add(trailer);
                                adapter.notifyDataSetChanged();

                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        adapter.notifyDataSetChanged();
                    }

                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hidePDialog();
            }
        });
        AppController.getInstance().addToRequestQueue(jsonObjectRequest);
        return v;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

        adapter.SetOnItemClickListener(new NowPlayingAdapter.OnItemClickListener() {

            @Override
            public void onItemClick(View v, int position) {

                  NowPlayingInfo _nowPlaying  = bottom.get(position);
                    // do something with position
                    Intent i = new Intent(v.getContext(), Single.class);

                    //pass the position of the item to single class
                     i.putExtra("ISS", _nowPlaying.getImage()); //you can put your current playing info.
                     i.putExtra("POSITION", position); //you can put your position to next activity.
                    v.getContext().startActivity(i);

            }
        });

在SingleInfo类中添加它。

                         String _rating = "";

                            public String get_rating() {
                                return _rating;
                            }

                            public void set_rating(String _rating) {
                                this._rating = _rating;
                            }

在单一课程中添加此内容 -

int _currentPos = 0 ; //Global variable . 


_currentPos = getIntent().getIntExtra("position", 0);// paste this in onCreate()

在单一类的onResponse中添加此代码 -

try {

                            JSONArray jsonArray = response.getJSONArray("results");
                            for (int i = 0; i < jsonArray.length(); i++) {

                                JSONObject jsonObject =       jsonArray.getJSONObject(i);
                                SingleInfo s = new SingleInfo();
                              s.set_rating(jsonObject.getString("rating"));

                                single.add(s);


                            }



                            //changed by Shoeb
                            SingleInfo _singleInfo =         single.get(_currentPos); //position from previous activity
                            textView.setText(_singleInfo.get_rating());
                            //end changes
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

答案 1 :(得分:0)

为您的意图添加额外内容

i.putExtra("position",position);

另一项活动:

getIntent().getIntExtra("position", 0);