Есть два 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));
}
}