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?
listnerin theonBindViewHolder(...)method. - s8am