2014-12-07 3 views
0

Мне нужна помощь в реализации моего приложения. Существуют разные виды деятельности. В одном действии отображается представление списка, затем, если пользователь нажимает на строку, отображается другая активность в виде списка.Попытка понять поведение вида списка в Android

Операциям просмотра списка может потребоваться переменная, которая используется как параметр для URL-адреса для получения данных JSON для подачи представления списка. Я попытаюсь объяснить это лучше.

Активность 1: ListView с объектами, извлекаемыми из JSON (нет необходимости в URL-параметре). Пользователь нажимает на строку и открывает действие 2 (переменная передается из 1-го занятия в действие 2). Действие 2: ListView с объектами, извлекаемыми из JSON, URL включает параметр (переменная, переданная от A1 до A2). Отображаются объекты просмотра списка.

Теперь пользователь нажимает кнопку «Назад» (кнопка оборудования). Показан список объектов списка 1.

Если пользователь снова нажимает на ту же строку в A1, что и раньше, то A2 ничего не показывает.

Если вам нужно, чтобы я показывал свой код, никаких проблем ... но мне нужно больше объяснять поведение, а не примеры кода. Спасибо

EDIT ЗДЕСЬ:

АКТИВНОСТЬ 1 ListView ADAPTER

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

public class DondeEsta_ListViewAdapter extends BaseAdapter { 

    // Declare Variables 
    Context context; 
    LayoutInflater inflater; 
    ArrayList<HashMap<String, String>> data; 
    ImageLoader imageLoader; 
    HashMap<String, String> resultp = new HashMap<String, String>(); 

    public DondeEsta_ListViewAdapter(Context context, 
      ArrayList<HashMap<String, String>> arraylist) { 
     this.context = context; 
     data = arraylist; 
     imageLoader = new ImageLoader(context); 
    } 

    @Override 
    public int getCount() { 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     // Declare Variables 

     TextView id_categoria_donde_esta_textView; 

     TextView nombre_categoria_donde_esta_textView; 

     ImageView imagen_categoria_donde_esta; 

     TextView tipo_menu; 


     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View itemView = inflater.inflate(R.layout.dondeesta_listview_item, parent, false); 
     // Get the position 
     resultp = data.get(position); 

     RelativeLayout myLayout = (RelativeLayout) itemView.findViewById(R.id.milayout); 


     if (position % 2 == 1) { 
      myLayout.setBackgroundResource(R.color.fondo); 
      //lugar_evento.setBackgroundResource(R.color.fondo); 
     } else { 
      myLayout.setBackgroundResource(R.color.blanco); 
      //titulo_evento.setBackgroundResource(R.color.blanco); 
      //lugar_evento.setBackgroundResource(R.color.blanco); 
     } 
     String tipo_de_menu = resultp.get(DondeEsta_MainActivity.TIPO_MENU); 
     String id_categoria_donde_esta =resultp.get(DondeEsta_MainActivity.ID_CATEGORIA_DONDE_ESTA); 

     // Locate the TextViews in listview_item.xml 
    nombre_categoria_donde_esta_textView = (TextView) itemView.findViewById(R.id.textView1); 

    imagen_categoria_donde_esta = (ImageView) itemView.findViewById(R.id.imageView1); 


    nombre_categoria_donde_esta_textView.setText (resultp.get(DondeEsta_MainActivity.NOMBRE_CATEGORIA_DONDE_ESTA)); 

     imageLoader.DisplayImage(resultp.get(DondeEsta_MainActivity.IMAGEN_CATEGORIA_DONDE_ESTA), imagen_categoria_donde_esta); 
     // Capture ListView item click 
     itemView.setOnClickListener(new OnClickListener() { 


      @Override 
      public void onClick(View arg0) { 
       // Get the position 
       resultp = data.get(position); 
       String tipo_de_menu = resultp.get(DondeEsta_MainActivity.TIPO_MENU); 

       Log.i("TIPO DE MENU =", tipo_de_menu); 



       if (tipo_de_menu.equals("1")){ 
        Log.i("PULSADO =", tipo_de_menu); 

        //TIPO 1 


        String idPrueba = resultp.get(DondeEsta_MainActivity.ID_CATEGORIA_DONDE_ESTA); 
        System.out.println("la id en DONDEESTA_LV ANTES DE PASARLA A T1 ++++++++++++++++++ ES: " + idPrueba); 

        Intent intent = new Intent(context, DondeEsta_T1_MainActivity.class); 
        intent.putExtra("idPrueba", idPrueba); 
        context.startActivity(intent); 

       } 
       else 
        //TIPO 2 
        if (tipo_de_menu.equals("2")){ 
         Log.i("PULSADO =", tipo_de_menu); 

         //TIPO 2 

         String idPrueba = resultp.get(DondeEsta_MainActivity.ID_CATEGORIA_DONDE_ESTA); 
         System.out.println("la id en DONDEESTA_LV ANTES DE PASARLA A T1 ++++++++++++++++++ ES: " + idPrueba); 

         Intent intent = new Intent(context, DondeEsta_T2_MainActivity.class); 
         intent.putExtra("idPrueba", idPrueba); 
         context.startActivity(intent); 
        } 
        else { 

       Intent intent = new Intent(context, DondeEsta_SingleItemView.class); 


       } 



      } 
     }); 
     return itemView; 
    } 
} 

АКТИВНОСТЬ 2 ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.StringTokenizer; 

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

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ListView; 

public class DondeEsta_T1_MainActivity extends Activity { 
    // Declare Variables 

    private static final String TAG_NAME = "nombreCategoria"; 
     private static final String TAG_ID = "idPrueba"; 
     private String name = "Categoria"; 
     private String id = "id"; 
    JSONObject jsonobject; 
    JSONArray jsonarray; 
    ListView listview; 
    DondeEsta_T1_ListViewAdapter adapter; 
    ProgressDialog mProgressDialog; 
    ArrayList<HashMap<String, String>> arraylist; 
    static String ID_DES= "id_des"; 
    static String TITULO_DES = "titulo_des"; 
    static String CATEGORIAS_DES = "categoria_des"; 
    static String LUGAR_DES = "lugar_des"; 
    static String LATITUD_DES = "latitud_des"; 
    static String LONGITUD_DES = "longitud_des"; 
    static String IMAGEN_DES = "imagen_des"; 
    static String DESCRIPCION_DES = "descripcion_des"; 
    static String WEB_DES = "web_des"; 
    static String MAIL_DES = "mail_des"; 
    static String TEL_DES = "tel_des"; 
    static String LUGAR_CORTO = "lugar_corto"; 
    static String idPrueba = "idPrueba"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.v("MVASCO", "context is null!"); 
     // getting intent data 
     Intent in = getIntent(); 

    // Get JSON values from previous intent 
     name = in.getStringExtra(TAG_NAME); 
     id = in.getStringExtra(TAG_ID); 
     idPrueba =in.getStringExtra(idPrueba); 

     setContentView(R.layout.dondeesta_t1_listview_main); 
     // Execute DownloadJSON AsyncTask 
     //new DownloadJSON().execute(); 
    } 

    // DownloadJSON AsyncTask 
    private class DownloadJSON extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Create a progressdialog 

     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      // Create an array 


     // Log.v("categoria para pasar a la URL", id_categoria_donde_esta); 
      arraylist = new ArrayList<HashMap<String, String>>(); 
      // Retrieve JSON Objects from the given URL address 

      jsonobject = JSONfunctions 
        .getJSONfromURL("http://..URL hidden.../casajuventud/app_php_files/recuperar_categorias_donde_esta_t1.php?cat="+idPrueba); 

      try { 
       // Locate the array name in JSON 
       jsonarray = jsonobject.getJSONArray("Categorias"); 

       for (int i = 0; i < jsonarray.length(); i++) { 
        HashMap<String, String> map = new HashMap<String, String>(); 
        jsonobject = jsonarray.getJSONObject(i); 
        // Retrive JSON Objects 
        map.put("id_des", jsonobject.getString("id_des")); 
        map.put("titulo_des", jsonobject.getString("titulo_des")); 

        map.put("categoria_des", jsonobject.getString("categoria_des")); 
        map.put("lugar_des", jsonobject.getString("lugar_des")); 
        map.put("latitud_des", jsonobject.getString("latitud_des")); 
        map.put("longitud_des", jsonobject.getString("longitud_des")); 
        map.put("descripcion_des", jsonobject.getString("descripcion_des")); 
        map.put("web_des", jsonobject.getString("web_des")); 
        map.put("mail_des", jsonobject.getString("mail_des")); 
        map.put("imagen_des", "http://www.solinpromex.com/casajuventud/sitios/"+jsonobject.getString("imagen_des"));      
        map.put("tel_des", jsonobject.getString("tel_des")); 
        map.put("lugar_corto", jsonobject.getString("lugar_corto")); 
        // Set the JSON Objects into the array 
        arraylist.add(map); 
       } 
      } catch (JSONException e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void args) { 
      // Locate the listview in listview_main.xml 
      listview = (ListView) findViewById(R.id.listview); 
      // Pass the results into ListViewAdapter.java 
      adapter = new DondeEsta_T1_ListViewAdapter(DondeEsta_T1_MainActivity.this, arraylist); 
      // Set the adapter to the ListView 
      listview.setAdapter(adapter); 


     } 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

     new DownloadJSON().execute(); 
    } 
    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 

    } 

} 

АКТИВНОСТЬ 2 LISTVIEWADAPTER

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

public class DondeEsta_T1_ListViewAdapter extends BaseAdapter { 

    // Declare Variables 
    Context context; 
    LayoutInflater inflater; 
    ArrayList<HashMap<String, String>> data; 
    ImageLoader imageLoader; 
    HashMap<String, String> resultp = new HashMap<String, String>(); 

    public DondeEsta_T1_ListViewAdapter(Context context, 
      ArrayList<HashMap<String, String>> arraylist) { 
     this.context = context; 
     data = arraylist; 
     imageLoader = new ImageLoader(context); 
    } 

    @Override 
    public int getCount() { 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     // Declare Variables 

     TextView id_des; 

     TextView titulo_des; 

     TextView categoria_des; 

     TextView lugar_des; 

     TextView latitud_des; 

     TextView longitud_des; 


     ImageView imagen_des; 

     TextView descripcion_des; 

     TextView web_des; 

     TextView tel_des; 

     TextView lugar_corto; 
     TextView mail_des; 









     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View itemView = inflater.inflate(R.layout.dondeesta_t1_listview_item, parent, false); 
     // Get the position 
     resultp = data.get(position); 

     RelativeLayout myLayout = (RelativeLayout) itemView.findViewById(R.id.milayout); 


     if (position % 2 == 1) { 
      myLayout.setBackgroundResource(R.color.fondo); 
      //lugar_evento.setBackgroundResource(R.color.fondo); 
     } else { 
      myLayout.setBackgroundResource(R.color.blanco); 
      //titulo_evento.setBackgroundResource(R.color.blanco); 
      //lugar_evento.setBackgroundResource(R.color.blanco); 
     } 
     String tipo_de_menu = resultp.get(DondeEsta_MainActivity.TIPO_MENU); 


     // Locate the TextViews in listview_item.xml 
    titulo_des = (TextView) itemView.findViewById(R.id.textView1); 
    lugar_corto = (TextView) itemView.findViewById(R.id.textView2); 

    titulo_des.setText (resultp.get(DondeEsta_T1_MainActivity.TITULO_DES)); 
    lugar_corto.setText (resultp.get(DondeEsta_T1_MainActivity.LUGAR_CORTO)); 

    // imageLoader.DisplayImage(resultp.get(DondeEsta_MainActivity.IMAGEN_CATEGORIA_DONDE_ESTA), imagen_categoria_donde_esta); 
     // Capture ListView item click 
     itemView.setOnClickListener(new OnClickListener() { 


      @Override 
      public void onClick(View arg0) { 
       // Get the position 
       resultp = data.get(position); 



       Intent intent = new Intent(context, DondeEsta_T1_SingleItemView.class); 

       // Pass all data rank 
       intent.putExtra("titulo_des", resultp.get(DondeEsta_T1_MainActivity.TITULO_DES)); 

       intent.putExtra("lugar_des", resultp.get(DondeEsta_T1_MainActivity.LUGAR_DES)); 

       intent.putExtra("latitud_des", resultp.get(DondeEsta_T1_MainActivity.LATITUD_DES)); 

       intent.putExtra("longitud_des", resultp.get(DondeEsta_T1_MainActivity.LONGITUD_DES)); 

       intent.putExtra("imagen_des", resultp.get(DondeEsta_T1_MainActivity.IMAGEN_DES)); 

       intent.putExtra("descripcion_des", resultp.get(DondeEsta_T1_MainActivity.DESCRIPCION_DES)); 

       intent.putExtra("web_des", resultp.get(DondeEsta_T1_MainActivity.WEB_DES)); 

       intent.putExtra("tel_des", resultp.get(DondeEsta_T1_MainActivity.TEL_DES)); 

       intent.putExtra("mail_des", resultp.get(DondeEsta_T1_MainActivity.MAIL_DES)); 

       intent.putExtra("lugar_corto", resultp.get(DondeEsta_T1_MainActivity.LUGAR_CORTO)); 
           // Start SingleItemView Class 
       context.startActivity(intent); 




      } 
     }); 
     return itemView; 
    } 
} 
+0

передают вашу переменную внутри намерения, вы ясно это? также вы пытались переопределить 'onBackPressed() {finish(); } 'в действии 2? это может быть проблема с переносом данных целей, но без отдельной строки кода это скорее гадание – snachmsm

+0

@snachmsm, переменная передается внутри намерения. Я не знаю метод onBackPressed(). – novato

+0

Я думаю, что лучше показать нам свой код, потому что многие причины могут вызвать вашу проблему. – Rami

ответ

1

просто поставить

@Override 
public void onBackPressed(){ 
    finish(); 
} 

где-то внутри второй деятельности.

также после того, как idPrueba =in.getStringExtra(idPrueba); вы можете попробовать in.removeExtra("idPrueba");

и последнее: почему idPrueba статичен? код в качестве другой переменной, статический final и получить переданное значение другой переменной. когда вы начинаете вторую активность в первый раз, когда вы получаете вновь прибываемую переменную и присваиваете ее ключевой переменной. это значение является статическим, поэтому второй вызов Activity имеет ранее перезаписанный ключ (а не «idPrueba», но значение ранее переданной переменной под ключом «idPrueba»). вероятно, это ваша проблема

для этого кода проще всего удалить static до String idPrueba = "idPrueba";, но я предлагаю вам разделить переменные ключа и значения. также проверьте setOnItemClickListener метод, более удобный

+0

Большое спасибо, проблема была «статическая» перед String – novato

Смежные вопросы