I can't realize this idea: there is a collection (music, images)

Map<String, Integer> imageCountru = new HashMap<>(); 

Separately collection for images:

 Map<String, Integer> mImageViews = new HashMap<>(); 

Main class code and list rendering:

  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRandom = new Random(); mCircleRecyclerView = (RecyclerView) findViewById(R.id.circle_recycler_view); mAdapter = new CircleAdapter(getApplicationContext()); GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 12); gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { switch (position % 7) { case 0: case 1: case 2: case 3: return 3; case 4: case 5: case 6: return 4; } return 3; } }); mCircleRecyclerView.setLayoutManager(gridLayoutManager); mCircleRecyclerView.setAdapter(mAdapter); ima = new ImageCountru(); 

ima.ininitialize (); ima.add ();

  some(); } 

Link examples:

  String england = "http://zaycev-tut.ru/load/0-0-0-1450-20"; String england1 = "http://zaycev-tut.ru/load/0-0-0-1450-202"; String england2 = "http://zaycev-tut.ru/load/0-0-0-1450-220"; String england3 = "http://zaycev-tut.ru/load/0-0-0-1450-2230"; String england4 = "http://zaycev-tut.ru/load/0-0-0-1450-2440"; String england5 = "http://zaycev-tut.ru/load/0-0-0-1450-244440"; String england6 = "http://zaycev-tut.ru/load/0-0-0-1450-2ddd0"; String england7 = "http://zaycev-tut.ru/load/0-0-0-1450-2dw0"; 

Code to add to the collection:

  public void ininitialize() { mImageViews.put(england, R.drawable.belarus); mImageViews.put(england, R.drawable.england); mImageViews.put(england, R.drawable.finland); mImageViews.put(england1, R.drawable.france); mImageViews.put(england2, R.drawable.russia); mImageViews.put(england3, R.drawable.japan); mImageViews.put(england4, R.drawable.litva); mImageViews.put(england5, R.drawable.russia); mImageViews.put(england6, R.drawable.ukraine); mImageViews.put(england7, R.drawable.ukraine); } public void add() { for (Map.Entry<String, Integer> img : mImageViews.entrySet()) { imageCountru.put((img.getKey()), img.getValue()); } } 

Here is the code to get from the imageCountru collection via an instance of the collection's value class.

  void some() { for (Iterator<Map.Entry<String, Integer>> it = ima.imageCountru.entrySet().iterator(); it.hasNext(); ) { Map.Entry<String, Integer> entry = it.next(); int n = entry.getValue(); mAdapter.addItem(n); } } 

I found a code in the network that should download the file from the url given to it and save the file under the name in the folder:

 void clik(){ try { for (Iterator<Map.Entry<String, Integer>> it = ima.imageCountru.entrySet().iterator(); it.hasNext(); ) { Map.Entry<String, Integer> entrys = it.next(); link = entrys.getKey(); } //set the download URL, a url that points to a file on the internet //this is the file to be downloaded URL url = new URL(link); //create the new connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //set up some things on the connection urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); //and connect! urlConnection.connect(); //set the path where we want to save the file //in this case, going to save it on the root directory of the //sd card. File SDCardRoot = Environment.getExternalStorageDirectory(); //create a new file, specifying the path, and the filename //which we want to save the file as. File file = new File(SDCardRoot,"somefile.ext"); //this will be used to write the downloaded data into the file we created FileOutputStream fileOutput = new FileOutputStream(file); //this will be used in reading the data from the internet InputStream inputStream = urlConnection.getInputStream(); //this is the total size of the file int totalSize = urlConnection.getContentLength(); //variable to store total downloaded bytes int downloadedSize = 0; //create a buffer... byte[] buffer = new byte[1024]; int bufferLength = 0; //used to store a temporary size of the buffer //now, read through the input buffer and write the contents to the file while ( (bufferLength = inputStream.read(buffer)) > 0 ) { //add the data in the buffer to the file in the file output stream (the file on the sd card fileOutput.write(buffer, 0, bufferLength); //add up the size so we know how much is downloaded downloadedSize += bufferLength; //this is where you would do something to report the prgress, like this maybe // updateProgress(downloadedSize, totalSize); } //close the output stream when done fileOutput.close(); //catch some possible errors... } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

Question: how to make a code correctly so that by clicking on some imageview element from the collection a file is downloaded and saved to the folder with music?

  • And what exactly does not work? - Yuriy SPb
  • @ YuriySPb lacks knowledge to implement, that is, clicked on some image from the collection, after which the file (sound) of the corresponding key started to load, this file should be uploaded to a card or memory under its own name - upward
  • You did not answer my question, but only repeated what you wrote in the question. - Yuriy SPb
  • You can assign a listner in the onBindViewHolder(...) method. - s8am
  • @ YuriySPb does not get to implement, lack of knowledge - upward

0