-1

リストビューの選択項目のse_idとse_nameを別のアクティビティに送信します。私はデータベースからse_idとse_nameを取得しましたが、リストにse_nameだけが表示されます。ユーザーがリストから名前を選択すると、ユーザーは選択した項目のse_idとse_nameを送信する別のアクティビティーに移動します。これは私のSEList.classです。私はChooseOptionSE.classにse_idとse_nameを送ります。インテントを使用して送信するにはどうすればよいですか?できる限り早くご回答ください。前もって感謝します。データベースからデータを取り出してリストに入れた後、リスト内の選択した項目のIDを別のアクティビティに送信したい

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

最後の目標はここにありますが、あなたは単に 'se_name'をarrayListに追加して、決して' se_id'を追加していないようです。これはあなたがしたいことですか? – Mackattack

+0

あなたは 'se_id'をどこに格納していないので、直接取得できません。まず配列に格納するか、独自の 'model'クラスを作成する必要があります。それを使って、彼らのIDを取得してください。 – Shailesh

+0

目的は、選択したアイテムのse_nameとse_idを別のアクティビティに送信することです。選択したアイテムのse_idとse_nameを知ることができるようにonItemClick()を使用しましたが、選択されたアイテムのse_idとse_nameの値を取得する方法はわかりません。あなたは私を助けてくれますか?私はユーザーにidを表示したくないのでse_idを追加していないので、名前だけが表示されます。 – Israt

答えて

0

IDをsperate ArrayListに格納するか、IDと名前を持つカスタムオブジェクトを作成できます。 そして、あなたはケース1には、使用することができます。ケース2における

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

を:

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

代わりのArrayLisy<String>を使用して、あなたがこのtoString()がお手伝いしますようにカスタムクラスを作成し、これを達成するためにArrayList<CustomObject>を使用することができますアイテムをリストに表示します。

注:直列化またはParcelableとしてあなたのCustomObjectを作る場合、あなたは 直接、

class CustomObject { 
    String name; 
    String id; 

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

にOnclickリスナーは、あなたがこのように行うことができます別のアクティビティにオブジェクトを送信することができます

@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

これを試してください。

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

今すぐarrayIdListにあなたのIDを格納するID記憶のために別のArrayListのいずれかを実行します。

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

     } 

は今、IDを取得し、別のアクティビティ

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

に渡すために、次のように行いますが、私はありません良い方法でこのことを言ったとして行うこと。 CustomAdapterについて学んでください。

0

まず、モデルクラスを作成し、se_idと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; 
} 
} 

とあなたのメインクラスで

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

     } 
    } 
} 

あなたはリストビューを設定するためのCustomAdapterクラスを作成する必要があります。

関連する問題