-1

Je souhaite envoyer les identifiants se_id et se_name de l'élément sélectionné à une autre activité. J'ai récupéré le se_id et le se_name de la base de données mais il montrera seulement le se_name dans la liste. Si un utilisateur sélectionne un nom dans la liste, il amène l'utilisateur à une autre activité où les noms se_id et se_name de l'élément sélectionné doivent être envoyés. C'est ma SEList.class et je vais envoyer le se_id et le se_name dans ChooseOptionSE.class. Comment l'envoyer en utilisant l'intention? S'il vous plaît répondre dès que possible. Merci d'avance.Après avoir récupéré les données de la base de données et les avoir placées dans la liste, je veux envoyer l'ID de l'élément sélectionné dans une autre activité

package com.example.user.entapp; 

    import android.app.ProgressDialog; 
    import android.content.Intent; 
    import android.os.AsyncTask; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.Toast; 

    import org.apache.http.NameValuePair; 
    import org.apache.http.message.BasicNameValuePair; 
    import org.json.JSONArray; 
    import org.json.JSONObject; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class SEList extends AppCompatActivity { 

    int sup_id, val; 
    String s1, msg, se_id, se_name; 
    ListView list; 
    ArrayList<String> arrayList = new ArrayList<>(); 
    ArrayAdapter<String> arrayAdapter; 
    JSONParser jsonParser=new JSONParser(); 
    JSONArray pro; 
    URL url = new URL(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_selist); 
     sup_id=getIntent().getExtras().getInt("sup_id"); 
     list= (ListView) findViewById(R.id.list_se); 
     new DataReceive().execute(); 

    } 
    public class DataReceive extends AsyncTask<String, String, String> { 

     ProgressDialog progressDialog = new ProgressDialog(SEList.this); 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      progressDialog.setMessage("Please wait..."); 
      progressDialog.setCancelable(false); 
      progressDialog.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      try{ 
       List<NameValuePair> pairlist = new ArrayList<NameValuePair>(); 
       s1=Integer.toString(sup_id); 
       pairlist.add(new BasicNameValuePair("supervisor_id", s1)); 
       JSONObject jsonObject=jsonParser.makeHttpRequest(url.RECEIVE_SENAME,"POST",pairlist); 
       val=jsonObject.getInt("val"); 
       msg=jsonObject.getString("msg"); 
       //id1=jsonObject.getInt("id"); 
       pro=jsonObject.getJSONArray("information"); 

       for(int i=0; i<pro.length(); i++) { 
        JSONObject jo = pro.getJSONObject(i); 
        se_id = jo.getString("se_id"); 
        se_name = jo.getString("se_name"); 

        arrayList.add(se_name); 
       } 

      }catch (Exception e){ 

      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 

      super.onPostExecute(s); 
      progressDialog.dismiss(); 
      if(val==1){ 
       Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show(); 
       arrayAdapter=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,arrayList); 
       list.setAdapter(arrayAdapter); 
       list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
         String se = (String) parent.getItemAtPosition(position); 
         Intent intent = new Intent(SEList.this, ChooseOptionSE.class); 
         intent.putExtra("se_id",se_id); 
         startActivity(intent); 

        } 
       }); 

      } 
      else{ 

       Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show(); 

      } 
     } 
    } 
} 
+0

Vous ne savez pas quel est l'objectif final, mais il semble que vous ajoutiez seulement 'se_name' à arrayList et que vous n'ajoutiez jamais' se_id'. Est-ce que c'est ce que tu veux faire? – Mackattack

+0

Vous ne stockez pas votre 'se_id' dans un endroit où vous ne pouvez pas l'obtenir directement. Vous devez d'abord le stocker dans un tableau ou créer votre propre classe 'model'. Utilisez cela et obtenez l'identifiant de leur. – Shailesh

+0

L'objectif est d'envoyer le nom et le se_id de l'élément sélectionné à une autre activité. J'ai utilisé onItemClick() pour que les noms se_id et se_name de l'élément sélectionné puissent être connus mais je ne suis pas sûr de savoir comment l'utiliser pour obtenir les valeurs de se_id et se_name de l'élément sélectionné. Pouvez-vous s'il vous plaît m'aider à ce sujet? Et je n'ajoute pas se_id parce que je ne veux pas montrer l'identifiant à l'utilisateur, seul le nom sera affiché. – Israt

Répondre

0

Vous pouvez stocker les ID dans Spraer ArrayList ou créer un objet personnalisé qui a un ID et un nom. Ensuite, vous pouvez utiliser, dans le cas 1:

String se = (String) parent.getItemAtPosition(position); 
se_id = idsList.get(position); 
Intent intent = new Intent(SEList.this, ChooseOptionSE.class); 
intent.putExtra("se_id",se_id); 
startActivity(intent); 

dans le cas 2:

CustomType obj =((CustomAdapter)customAdapter).getAdapter().getItemAt(position); 
String se_name = obj.getName(); 
int se_id = obj.getId(); 
0

Au lieu d'utiliser ArrayLisy<String> vous pouvez utiliser ArrayList<CustomObject> pour y parvenir, Créez votre classe personnalisée comme ce toString() vous aidera pour afficher l'élément dans la liste.

Note: Si vous faites votre CustomObject comme Serializable ou Parcelable, vous pouvez envoyer directement l'objet à une autre activité

class CustomObject { 
    String name; 
    String id; 

    @Override 
    public String toString() { 
     return name; 
    } 
} 

Onclick Listener, vous pouvez faire cela comme,

@Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     CustomObject se = (CustomObject) arrayList.get(position) ; 
     Intent intent = new Intent(SEList.this, ChooseOptionSE.class); 
     intent.putExtra("se_id",se.id); 
     intent.putExtra("se_name",se.name); 


     startActivity(intent); 

    } 
0

Essayez ceci.

Prenez un autre arraylist id stockage

ArrayList<String> arrayIdList = new ArrayList<>(); 

maintenant votre identifiant stocker dans arrayIdList.

try{ 
      List<NameValuePair> pairlist = new ArrayList<NameValuePair>(); 
      arrayIdList = new ArrayList<String>(); 

      for(int i=0; i<pro.length(); i++) { 
       JSONObject jo = pro.getJSONObject(i); 
       se_id = jo.getString("se_id"); 
       se_name = jo.getString("se_name"); 

       arrayList.add(se_name); 
       arrayIdList.add(se_id); 
      } 

     }catch (Exception e){ 

     } 

font maintenant comme ceci pour obtenir id et de passer à une autre activité

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    String se_id = ""; 
    for(int i = 0; i < arrayIdList.size(); i++) 
    { 
     if(position == i){ 
      se_id = arrayIdList.get(i); 
      break; 
     } 
    } 

    Log.i("se_is = ", ""+ se_id); 
    if(se_id != null){ 
     String se = (String) parent.getItemAtPosition(position); 
     Intent intent = new Intent(SEList.this, ChooseOptionSE.class); 
     intent.putExtra("se_id",se_id); 
     startActivity(intent); 
    } 
} 

Mais comme je vous ai dit que cela de ne pas bonne façon de le faire. S'il vous plaît en savoir plus sur CustomAdapter.

0

Vous devez d'abord créer une classe de modèle .Et définir vos se_id et se_name.

public class Model { 
String name; 
String id; 
public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 




public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 
} 

et dans votre classe principale

public class SEList extends AppCompatActivity { 

int sup_id, val; 
String s1, msg, se_id, se_name; 
ListView list; 
List<Model> arrayList = new ArrayList<>(); 
ArrayAdapter<String> arrayAdapter; 
JSONParser jsonParser=new JSONParser(); 
JSONArray pro; 
URL url = new URL(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_selist); 
    sup_id=getIntent().getExtras().getInt("sup_id"); 
    list= (ListView) findViewById(R.id.list_se); 
    new DataReceive().execute(); 

} 
public class DataReceive extends AsyncTask<String, String, String> { 

    ProgressDialog progressDialog = new ProgressDialog(SEList.this); 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     progressDialog.setMessage("Please wait..."); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try{ 
      List<NameValuePair> pairlist = new ArrayList<NameValuePair>(); 
      s1=Integer.toString(sup_id); 
      pairlist.add(new BasicNameValuePair("supervisor_id", s1)); 
      JSONObject jsonObject=jsonParser.makeHttpRequest(url.RECEIVE_SENAME,"POST",pairlist); 
      val=jsonObject.getInt("val"); 
      msg=jsonObject.getString("msg"); 
      //id1=jsonObject.getInt("id"); 
      pro=jsonObject.getJSONArray("information"); 

      for(int i=0; i<pro.length(); i++) { 
       JSONObject jo = pro.getJSONObject(i); 
       Model model = new Model(); 
       se_id = jo.getString("se_id"); 
       se_name = jo.getString("se_name"); 

       model.setId(se_id); 
       model.setName(se_name); 


       arrayList.add(model); 
      } 

     }catch (Exception e){ 

     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 

     super.onPostExecute(s); 
     progressDialog.dismiss(); 
     if(val==1){ 
      Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show(); 

      CustomAdapter adapter = new CustomAdapter(arrayList,SEList.this) 
      list.setAdapter(adapter); 

       list.setOnItemClickListener(new OnItemClickListener() { 
         
                    @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        //String se = (String) parent.getItemAtPosition(position); 
        Model model = arrayList.get(position); 
        Intent intent = new Intent(SEList.this, ChooseOptionSE.class); 
        intent.putExtra("se_id", model.getId); 
        startActivity(intent); 

       } 
      }); 

     } 
     else{ 

      Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show(); 

     } 
    } 
} 

Vous devez créer une classe CustomAdapter pour la mise en Listview.

public class CustomAdapter extends ArrayAdapter<Model> { 

private List<Model> dataSet; 
Context mContext; 

// View lookup cache 
private static class ViewHolder { 
    TextView txtName; 

} 

public CustomAdapter(ArrayList<Model> data, Context context) { 
    super(context, R.layout.row_item, data); // Create a layout xml file with one text view 
    this.dataSet = data; 
    this.mContext=context; 

} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // Get the data item for this position 
    Model dataModel = getItem(position); 
    // Check if an existing view is being reused, otherwise inflate the view 
    ViewHolder viewHolder; // view lookup cache stored in tag 

    final View result; 

    if (convertView == null) { 

     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.row_item, parent, false); 
     viewHolder.txtName = (TextView) convertView.findViewById(R.id.name); 

     result=convertView; 

     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
     result=convertView; 
    } 

    viewHolder.txtName.setText(dataModel.getName()); 

    // Return the completed view to render on screen 
    return convertView; 
} 
}