Задать вопрос
@Chesterfield25

Почему подставляет значения?

Есть два activity. В первом activity расположены категории материалов, при нажатии на соответствующую категорию открывается второе activity в которое передается id категории из первого activity и подставляется в url для получения материалов данной категории. Но если я возвращаюсь назад в activity с категориями и заново нажимаю на любую категорию, то при повторном и последующих случаях передается в url id выбранной категории и всех предыдущих которые я нажимал.
Пример: выбрал категорию 1 перешло по ссылке https://site.com/category_id=1, вернулся обратно и нажал на категорию 10 перешло по ссылке https://site.com/category_id=110 снова вернулся обратно и нажал на категорию 3 уже открывает ссылку https://site.com/category_id=1103 и так далее!

Вот activity из которого передаю id

public class MainActivity extends AppCompatActivity implements RecyclerViewInterface {

    private ActivityMainBinding binding;

    private static String CATEGORY_URL = "https://site.ru/appfaucetpayearning/rotator/api/category/read";

    List<CategoryModel> categoryList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

        GetData getData = new GetData();
        getData.execute();
    }

    public class GetData extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... strings) {
            String current = "";

            try {
                URL url;
                HttpURLConnection urlConnection = null;

                try {
                    url = new URL(CATEGORY_URL);
                    urlConnection = (HttpURLConnection) url.openConnection();
                    InputStream is = urlConnection.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);

                    int data = isr.read();
                    while(data != -1) {
                        current += (char) data;
                        data = isr.read();
                    }

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if(urlConnection != null) {
                        urlConnection.disconnect();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return current;
        }

        @Override
        protected void onPostExecute(String s) {
            try {
                JSONObject jsonObject = new JSONObject(s);
                JSONArray jsonArray = jsonObject.getJSONArray("category");

                for(int i = 0 ; i < jsonArray.length() ; i++) {
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);

                    CategoryModel model = new CategoryModel();
                    model.setId(jsonObject1.getString("id"));
                    model.setName(jsonObject1.getString("name"));
                    model.setImg(jsonObject1.getString("img"));

                    categoryList.add(model);
                }

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

            PutDataIntoRecyclerView(categoryList);
        }
    }

    private void PutDataIntoRecyclerView(List<CategoryModel> categoryList) {
        CategoryAdapter categoryAdapter = new CategoryAdapter(this, categoryList, this);
        binding.recyclerMain.setAdapter(categoryAdapter);
        binding.recyclerMain.setLayoutManager(new LinearLayoutManager(this));
    }

    @Override
    public void onItemClick(int position) {
        Intent i = new Intent(MainActivity.this, TwoActivity.class);

        i.putExtra("id", categoryList.get(position).getId());
        i.putExtra("name", categoryList.get(position).getName());
        i.putExtra("img", categoryList.get(position).getImg());
        startActivity(i);
        finish();

        // Toast.makeText(this, "Data received: " + categoryList.get(position).getName(), Toast.LENGTH_SHORT).show();
    }

}


Вот activity в которое передаю id

public class TwoActivity extends AppCompatActivity {
    
    private ActivityTwoBinding binding;
    private static String FAUCET_URL = "https://xmonitoring.ru/appfaucetpayearning/rotator/api/faucet/read_one_category?category_id=";
    List<FaucetModel> faucetList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityTwoBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

        String id = getIntent().getStringExtra("id");
        String name = getIntent().getStringExtra("name");
        int img = getIntent().getIntExtra("img", 0);

        FAUCET_URL = FAUCET_URL + id;
        faucetList = new ArrayList<>();

        GetData getData = new GetData();
        getData.execute();
    }

    public class GetData extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... strings) {
            String current = "";

            try {
                URL url;
                HttpURLConnection urlConnection = null;

                try {
                    url = new URL(FAUCET_URL);
                    urlConnection = (HttpURLConnection) url.openConnection();
                    InputStream is = urlConnection.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);

                    int data = isr.read();
                    while(data != -1) {
                        current += (char) data;
                        data = isr.read();
                    }

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if(urlConnection != null) {
                        urlConnection.disconnect();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return current;
        }

        @Override
        protected void onPostExecute(String s) {
            try {
                JSONObject jsonObject = new JSONObject(s);
                JSONArray jsonArray = jsonObject.getJSONArray("faucet");

                for(int i = 0 ; i < jsonArray.length() ; i++) {
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);

                    FaucetModel model = new FaucetModel();
                    model.setId(jsonObject1.getString("id"));
                    model.setName(jsonObject1.getString("name"));
                    model.setTime(jsonObject1.getString("time"));
                    model.setUrl(jsonObject1.getString("url"));

                    faucetList.add(model);
                }

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

            PutDataIntoRecyclerView(faucetList);
        }
    }

    private void PutDataIntoRecyclerView(List<FaucetModel> faucetList) {
        FaucetAdapter faucetAdapter = new FaucetAdapter(this, faucetList);
        binding.recyclerMain.setAdapter(faucetAdapter);
        binding.recyclerMain.setLayoutManager(new LinearLayoutManager(this));

    }
}
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы