-1

Ich möchte die se_id und se_name des ausgewählten Elements der Listenansicht an eine andere Aktivität senden. Ich habe die se_id und se_name aus der Datenbank abgerufen, aber es wird nur den se_name in der Liste angezeigt. Wenn ein Benutzer einen Namen aus der Liste auswählt, führt er den Benutzer zu einer anderen Aktivität, wo die se_id und se_name des ausgewählten Elements gesendet werden sollen. Dies ist meine SEList.class und ich werde die se_id und se_name in ChooseOptionSE.class senden. Wie sende ich es mit Absicht? Bitte antworten Sie so bald wie möglich. Danke im Voraus.Nach dem Abrufen von Daten aus der Datenbank und dem Einfügen in die Liste möchte ich die ID des ausgewählten Elements in der Liste an eine andere Aktivität senden.

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

Nicht sicher, was das Endziel hier ist, aber es sieht so aus, als würden Sie 'se_name' nur zu arrayList hinzufügen und niemals' se_id' hinzufügen. Wollen Sie das tun? – Mackattack

+0

Sie speichern Ihre 'se_id' nicht irgendwo, so dass Sie das nicht direkt bekommen können. Zuerst müssen Sie es in einem Array speichern oder eine eigene Modellklasse erstellen. Verwenden Sie das und erhalten Sie ID von ihrem. – Shailesh

+0

Ziel ist es, den se_name und se_id des ausgewählten Elements an eine andere Aktivität zu senden. Ich habe onItemClick() verwendet, so dass die se_id und se_name des ausgewählten Elements bekannt sein kann, aber ich bin mir nicht sicher, wie man es verwendet, um die Werte der se_id und se_name des ausgewählten Elements zu erhalten. Kannst du mir bitte dabei helfen? Und ich füge se_id nicht hinzu, weil ich die ID dem Benutzer nicht zeigen möchte, nur der Name wird angezeigt. – Israt

Antwort

0

Sie können die IDs in einer separaten ArrayList speichern oder ein benutzerdefiniertes Objekt mit einer ID und einem Namen erstellen. Dann können Sie im Fall 1 verwenden,:

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); 

im Fall 2:

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

Statt ArrayLisy<String> verwenden Sie ArrayList<CustomObject> verwenden können, um dies zu erreichen, Ihre eigene Klasse erstellen, wie diese toString() wird Ihnen helfen, um das Objekt in der Liste anzuzeigen.

Hinweis: Wenn Sie Ihre CustomObject als Serializable oder Parcel machen, Sie können das Objekt direkt an eine andere Aktivität senden

class CustomObject { 
    String name; 
    String id; 

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

Onclick Zuhörer, Sie wie dies tun können,

@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

Versuchen Sie dies.

Nehmen Sie eine andere Arraylist für id

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

Jetzt speichern Sie Ihre ID in arrayIdList speichern.

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){ 

     } 

jetzt tun wie diese ID zu erhalten und auf eine andere Tätigkeit passieren

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); 
    } 
} 

Aber wie ich Sie nicht gute Möglichkeit, dass dies gesagt hatte. Bitte lernen Sie über CustomAdapter.

0

Zuerst sollten Sie eine Modellklasse erstellen. Legen Sie Ihre se_id und se_name darauf fest.

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; 
} 
} 

und in der Hauptklasse

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(); 

     } 
    } 
} 

Sie sollten für die Einstellung Listenansicht eine CustomAdapter Klasse erstellen.

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; 
} 
} 
Verwandte Themen