download file by clicking on a recycler view

0

Let's see if you can help me because I do not know what to do

My intention is that in the recyclerview when I clicked, I downloaded a file based on the link provided by the sql

I've already tried all the methods I know and I've searched but there's no way

I hope you can help me

a greeting

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.ArrayList;

class RVAdaptermanuales extends RecyclerView.Adapter<RVAdaptermanuales.DatosmanualesViewHolder> {

    private ArrayList<manuales> listamanuales;

    class DatosmanualesViewHolder extends RecyclerView.ViewHolder {
        RelativeLayout cuerpo;
        TextView banco, descripcion, enlace;

        DatosmanualesViewHolder(View v) {
            super(v);
            cuerpo = (RelativeLayout) v.findViewById(R.id.cuerpo);
            banco = (TextView) itemView.findViewById(R.id.banco);
            descripcion = (TextView) itemView.findViewById(R.id.descripcion);
            enlace = (TextView) itemView.findViewById(R.id.enlace);
        }
    }

    RVAdaptermanuales(ArrayList<manuales> listamanuales) {this.listamanuales = listamanuales;}

    @Override
    public DatosmanualesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.vistadelrvmanuales,parent,false);
        return new DatosmanualesViewHolder(v);
    }

    @Override
    public void onBindViewHolder(DatosmanualesViewHolder holder, int position) {
        holder.banco.setText(listamanuales.get(position).getManuales());
        holder.descripcion.setText(listamanuales.get(position).getDescripcion());
        holder.enlace.setText(listamanuales.get(position).getEnlace());
    }

    @Override
    public int getItemCount() {
        return listamanuales.size();
    }
}

now the activity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;

import java.util.ArrayList;

public class ManualesActivity extends AppCompatActivity {
    RecyclerView rvmanuales;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_manuales);
        rvmanuales = (RecyclerView) findViewById(R.id.rvmanuales);
        rvmanuales.setHasFixedSize(true);
        LinearLayoutManager llm = new LinearLayoutManager(this);
        rvmanuales.setLayoutManager(llm);
        String consulta = "***************************";
        EnviarRecibirDatos(consulta);
    }



    public void EnviarRecibirDatos(String URL) {

        RequestQueue queue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                response = response.replace("][", ",");
                if (response.length() > 0) {
                    try {
                        JSONArray ja = new JSONArray(response);
                        Log.i("sizejson", "" + ja.length());
                        CargarListView(ja);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        queue.add(stringRequest);

    }

    public void CargarListView(JSONArray ja) {

        ArrayList<manuales> listamanuales = new ArrayList<>();

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

            try {
                manuales manuales = new manuales(ja.getString(i + 2),"**********************" + ja.getString(i + 4),ja.getString(i + 3) );
                listamanuales.add(manuales);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        RVAdaptermanuales adaptadorRV = new RVAdaptermanuales(listamanuales);
        rvmanuales.setAdapter(adaptadorRV);


    }
}

although it has nothing to do but good ...

class manuales {


    private String manuales, descripcion, enlace;


    manuales(String manuales, String descripcion, String enlace) {
        this.manuales = manuales;
        this.descripcion = descripcion;
        this.enlace = enlace;

    }

    String getManuales() {
        return manuales;
    }
    String getDescripcion(){return descripcion;}
    String getEnlace(){return enlace;}
    }
    
asked by Noel 07.04.2017 в 21:48
source

2 answers

0

import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast;

import java.util.List;

class RVAdaptermanuals extends RecyclerView.Adapter {

private final Context context;
private List<manuales> listamanuales;

static class DatosmanualesViewHolder extends RecyclerView.ViewHolder {
    Context context;
    TextView banco, descripcion, enlace;
    DatosmanualesViewHolder(View v) {
        super(v);
        banco = (TextView)itemView.findViewById(R.id.banco);
        descripcion = (TextView)itemView.findViewById(R.id.descripcion);
        enlace = (TextView)itemView.findViewById(R.id.enlace);
        context = itemView.getContext();
    }
}

RVAdaptermanuales(List<manuales> listamanuales) {
    this.listamanuales = listamanuales;
    context = null;
}

@Override
public DatosmanualesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.vistadelrvmanuales,parent,false);

    return new DatosmanualesViewHolder(v);
}

@Override
public void onBindViewHolder(DatosmanualesViewHolder holder, final int position) {

    holder.banco.setText(listamanuales.get(position).getBanco());
    holder.descripcion.setText(listamanuales.get(position).getDescripcion());
    holder.enlace.setText(listamanuales.get(position).getEnlace());
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(context, "Solo falta enlazar" + position, Toast.LENGTH_SHORT).show();
        }
    });
}

@Override
public int getItemCount() {
    return listamanuales.size();
}

}

is what has given me time before I go to work

a greeting

    
answered by 08.04.2017 в 08:33
0

Okay, this one shows me a toast without problem.

Now the query is only to open a download link based on the link provided by the sql. The recycler data already pulls them out of a sql database but it does not work. this is what I have but here I am completely lost.

                        public void onClick(View v) {
            Uri uri = (Uri.parse("http://ares.astursistemas.es/ficheros/manuales/" ));
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }

if after the link I add + descripcion.getText (). toString () does not validate the code and that is how I have done it in the rest of the app

a greeting

    
answered by 08.04.2017 в 14:22