我想获取被单击的课程按钮的ID,并加载该ID的数据

时间:2019-07-05 00:59:45

标签: android android-studio android-recyclerview android-listview

我当前正在使用回收站视图通过JSON加载课程,第一门课程在JSON中的ID为1,然后第二课,每门课程的ID存储在数据库中。我希望如果单击第一个按钮,则应将其ID保存到我的会话管理器中,并将其传递给下一个活动以加载其相应的数据,当我单击第二个按钮时,应通过传递其各自的ID来加载数据ID。我已经附加了回收者视图的onclick,它应该获得单击的按钮的ID,并将其存储到一个字符串中,然后将其存储到会话管理器中。

private RecyclerView mRecyclerView;
private CourseAdapter mExampleAdapter;
private ArrayList<CourseItem> mExampleList;
private RequestQueue mRequestQueue;
private static final String URL_PRODUCTS = "https://www.sniptx.com/ws/findTeacher/allCourses.php";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    mRecyclerView = (RecyclerView) findViewById(R.id.course_recycler_view);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, mRecyclerView, new RecyclerItemClickListener
            .OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            Toast.makeText(HomeActivity.this, "Item Clicked" + position , Toast.LENGTH_LONG).show();
        }

        @Override
        public void onItemLongClick(View view, int position) {
            //handle longClick if any
        }
    }));
    mExampleList = new ArrayList<>();

    mRequestQueue = Volley.newRequestQueue(this);
    parseJSON();
}
private void parseJSON() {
    StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_PRODUCTS,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                        try {
                            JSONObject obj = new JSONObject(response);
                            JSONArray courseArray = obj.getJSONArray("courses");

                            for (int i = 0; i < courseArray.length(); i++) {
                                JSONObject courseObject = courseArray.getJSONObject(i);

                                String courseName = courseObject.getString("c_name");
                                String id = courseObject.getString("c_id").trim();
                                l.add(new CourseItem(courseName, id));
                            }

                    try {
                        JSONArray array = new JSONArray(response);

                        for (int i = 0; i < array.length(); i++) {

                            JSONObject product = array.getJSONObject(i);

                            String courseName = product.getString("c_name");
                            String id = product.getString("id").trim();

                            mExampleList.add(new CourseItem(courseName, id));
                            Toast.makeText(HomeActivity.this,"ID is" +id, Toast.LENGTH_SHORT).show();

                        }

                        mExampleAdapter = new CourseAdapter(HomeActivity.this, mExampleList);
                        mRecyclerView.setAdapter(mExampleAdapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    Volley.newRequestQueue(this).add(stringRequest);    }

}

1 个答案:

答案 0 :(得分:0)

在第一个活动中使用Intent将数据(即,被单击按钮的ID)设置为附加的目标意图参数,并在第二个活动中获取附加的意图。

// first activity
Intent i = new Intent(getApplicationContext(), SecondActivity.class);  
i.putExtra("id", value);  
startActivity(i);

// second activity
Bundle extras = getIntent().getExtras();  
int id = extras.getInt("id");