Android 单击从MYSQL数据库获取的动态ListView的元素

Android 单击从MYSQL数据库获取的动态ListView的元素,android,listview,dynamic,android-activity,onclick,Android,Listview,Dynamic,Android Activity,Onclick,我有一个从MYSQL数据库中获取的ListView,它显示了一位教师的课程列表,我的想法是,当我点击每一门课程时,它通过Intents发送课程和班级的数据,并进入另一个活动。问题是因为它是一个动态列表,并且具有listview的行数是可变的 例如,ListView具有: 1A 2A 2B 我的想法是,当我点击1A时,它会发送给另一个活动,并将其1和A作为变量传递。 当我点击2A时,变量将是2和A以及2B、2和B 我的想法是使用这种方法 public void onItemClick(Adapte

我有一个从MYSQL数据库中获取的ListView,它显示了一位教师的课程列表,我的想法是,当我点击每一门课程时,它通过Intents发送课程和班级的数据,并进入另一个活动。问题是因为它是一个动态列表,并且具有listview的行数是可变的

例如,ListView具有:

1A 2A 2B

我的想法是,当我点击1A时,它会发送给另一个活动,并将其1和A作为变量传递。 当我点击2A时,变量将是2和A以及2B、2和B

我的想法是使用这种方法

public void onItemClick(AdapterView<?> adapterView, View view, int i,
                    long l)
public void-onItemClick(AdapterView-AdapterView,View-View,int-i,
长(l)
我的代码是:

 public class Cursos extends MainActivity{
    ListView listaJson;
    String user;
    static int id_usuario;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cursos);

    listaJson = (ListView)findViewById(R.id.lista_cursos);
    Bundle extras = getIntent().getExtras();
    //Obtenemos datos enviados en el intent.
    if (extras != null) {
       user  = extras.getString("user");
       id_usuario = extras.getInt("id_usuario");//usuario
    }else{
       user="error";
       }

    Tarea1 tarea1 = new Tarea1();
    tarea1.cargarContenido(getApplicationContext());
    tarea1.execute(listaJson); //Le pasamos la lista para modificarla

    listaJson.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i,
                long l) {
            String item = ((TextView)view).getText().toString();

            Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();

        }
    });
}
    //Creamos un listView a través de sus objetos Curso.
static class Tarea1 extends AsyncTask<ListView, Void, ArrayAdapter<mostrar_cursos>>
{
    Context contexto;
    ListView list;
    InputStream is;
    ArrayList<mostrar_cursos> listacursos = new ArrayList<mostrar_cursos>();

    public void cargarContenido (Context contexto)
    {
        this.contexto= contexto;
    }

    @Override
    protected ArrayAdapter<mostrar_cursos> doInBackground(ListView... params)
    {
        list = params[0];
        String resultado = "fallo";
        mostrar_cursos curs;



        //Creo la conexión HTTP

        HttpClient cliente = new DefaultHttpClient();
        HttpGet peticionGet = new HttpGet("http://192.168.0.100/android/sesion_profesor.php?id_usuario="+id_usuario+"");
        try{
            HttpResponse response = cliente.execute(peticionGet);
            HttpEntity contenido = response.getEntity();
            is = contenido.getContent(); //Contenido de la respuesta
        }catch (ClientProtocolException e)
        {
            e.printStackTrace();
        }catch (IOException e)
        {
            e.printStackTrace();
        }

        BufferedReader buferlector = new BufferedReader (new InputStreamReader(is));//leemos los datos del is
        StringBuilder sb = new StringBuilder();
        String linea = null;
        try{
            while((linea = buferlector.readLine())!=null)
            {
                sb.append(linea);
            }
        }catch (IOException e)
        {
            e.printStackTrace();
        }
        try{
            is.close(); //Cerramos el inputstream para no consumir recursos
        }catch (IOException e) {
            e.printStackTrace();
        }
        resultado = sb.toString(); //Pasamos lo que hemos recibido por parámetros a la variable resultado
        //En la variable resultado tengo: [{"curso":"1","clase":"A"}]
        try{
            JSONArray arrayJson = new JSONArray(resultado);
            for(int i= 0; i<arrayJson.length();i++){ //Recorro el string
                JSONObject objetoJson = arrayJson.getJSONObject(i); //Devuelvo el primer objeto (indice=0) {"curso":"1","clase":"A"}
                curs = new mostrar_cursos(objetoJson.getString("curso"), objetoJson.getString("clase"));
                listacursos.add(curs); //Añado el nuevo curso
            }
        }catch (JSONException e){
            e.printStackTrace();
        }
        ArrayAdapter<mostrar_cursos> adaptador = new ArrayAdapter<mostrar_cursos>(contexto, android.R.layout.simple_list_item_1, listacursos); //Contexto de ver clientes (Muestra la lista con los datos de clientes que le he pasado

        return adaptador; //Devuelve su dato al método onPostExecute
            }
    @Override
    protected void onPostExecute(ArrayAdapter<mostrar_cursos> result) 
    {
        list.setAdapter(result);
        }

    }
}
公共类游标扩展了main活动{
ListView listaJson;
字符串用户;
静态int id_usuario;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.cursos);
listaJson=(ListView)findViewById(R.id.lista_cursos);
Bundle extras=getIntent().getExtras();
//目的地的环境。
如果(附加值!=null){
user=extras.getString(“用户”);
id_usuario=extras.getInt(“id_usuario”);//usuario
}否则{
user=“error”;
}
Tarea1 Tarea1=新的Tarea1();
tarea1.cargarcontendo(getApplicationContext());
tarea1.execute(listaJson);//lepasamos la lista para modificarla
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView、View视图、int i、,
长(l){
字符串项=((TextView)视图).getText().toString();
Toast.makeText(getBaseContext(),item,Toast.LENGTH_LONG.show();
}
});
}
//从列表中可以看到一条道路。
静态类Tarea1扩展了异步任务
{
语境;
列表视图列表;
输入流为;
ArrayList listacursos=新的ArrayList();
公共无效cargarContenido(上下文上下文)
{
this.contexto=contexto;
}
@凌驾
受保护的阵列适配器doInBackground(ListView…参数)
{
列表=参数[0];
字符串resultado=“fallo”;
mostrar_cursos curs;
//科内西翁酒店
HttpClient客户端=新的默认HttpClient();
HttpGet-peticionGet=新的HttpGet(“http://192.168.0.100/android/sesion_profesor.php?id_usuario=“+id_usuario+”);
试一试{
HttpResponse response=cliente.execute(peticionGet);
HttpEntity contenido=response.getEntity();
is=contendo.getContent();//contendo de la respuesta
}捕获(客户端协议例外e)
{
e、 printStackTrace();
}捕获(IOE异常)
{
e、 printStackTrace();
}
BufferedReader buferlector=新的BufferedReader(新的InputStreamReader(is));//leemos los datos del is
StringBuilder sb=新的StringBuilder();
字符串linea=null;
试一试{
而((linea=buferlector.readLine())!=null)
{
某人附加(线性);
}
}捕获(IOE异常)
{
e、 printStackTrace();
}
试一试{
is.close();//Cerramos el inputstream参数无消耗递归
}捕获(IOE异常){
e、 printStackTrace();
}
RESUTADAD= SB toStrug()
//En-la变量resultado tengo:[{“curso”:“1”,“clase”:“A”}]
试一试{
JSONArray arrayJson=新的JSONArray(resultado);

对于(int i=0;i将其移动到
onPostExecute

  listaJson.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i,
                long l) {
            String item = (String) adapterView.getItemAtPosition(i);
            Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();
            Intent intent = new Intent(ActivityName.this,SecondActivity.class);
            i.putExtra("key", item);
            startActivity(intent);

        }
    });
listaJson.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView、View视图、int i、,
长(l){
字符串项=(字符串)adapterView.getItemAtPosition(i);
Toast.makeText(getApplicationContext(),item,Toast.LENGTH_LONG.show();
意向意向=新意向(ActivityName.this,SecondActivity.class);
i、 putExtra(“键”,项目);
星触觉(意向);
}
});

您想在下一个活动中发送值吗?是的,我想发送课程编号和录取通知书course@AlonsoGonzálezNestal number和string在不同的文本视图上?是的,这在我放置它的地方起作用,但我只在祝酒词中显示,如果它识别listview每行的文本,但我的想法是传递到另一个活动w在发送的2个参数中,@AlonsoGonzálezNestal 2个参数是1和另一个参数,还是单个项目1A@AlonsoGonzálezNestal你可以使用意图和startActivity。它们是不同的。一个是1,另一个是字母A@AlonsoGonzálezNestal:创建自定义阵列适配器,然后使用
View.setTag
保存
curso
value在视图和上单击
onItemClick
使用
String str_curso=(String)((TextView)视图).getTag()
String item=((TextView)视图).getText().toString()
从所选行获取这两个值