2016-08-02 3 views
-1

Je suis désolé de vous déranger ... mais j'ai cherché mon problème sur SO mais ne parvient pas à le résoudre ...OnListItemClick stockez-le au tableau et passez ce tableau à l'activité suivante en utilisant intention et montrez tous les éléments sélectionnés dans Listview

PLAN

J'ai un listView peuplé de volley ... je veux quand l'utilisateur clique sur un élément de listView, il se sélectionné (l'utilisateur peut sélectionner plusieurs éléments de liste), puis sur le bouton Cliquez sur toutes les les éléments sélectionnés s'affichent dans listView de mon CartActivity.

(actully, je travaille Panier activité de type)

Problème

J'utilise ArrayList (myCartList) et dans la méthode onListItemClickListener je suis d'ajouter l'élément clicked à ArrayList (myCartList) comme : myCartList.add(getItem(position));

Après cela sur le bouton cliquez sur ce tableau sera transmis à CartActivity et affichage là ListView ...

code est ci-dessous

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.Request; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 

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

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

public class grabedDb extends AppCompatActivity { 
EditText grabResults; 
Button cart; 
String url = "http://MY_LINK_HERE"; 
ArrayList<HashMap<String, String>> Item_List; 
ProgressDialog PD; 
SimpleAdapter adapter; 
ArrayList stock_list; 


// JSON Node names 
public static final String ITEM_ID = "name"; 
public static final String ITEM_NAME = "rate"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_grabed_db); 
    grabResults = (EditText) findViewById(R.id.grabed_et_search); 
    cart = (Button) findViewById(R.id.grabed_btn_showCart); 
    grabResults.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      //perform Search 
       grabedDb.this.adapter.getFilter().filter(s); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

    Item_List = new ArrayList<HashMap<String, String>>(); 

    PD = new ProgressDialog(this); 
    PD.setMessage("Please Wait..."); 
    PD.setCancelable(false); 

    ReadDataFromDB(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.activity_main_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 
private void ReadDataFromDB() { 
    PD.show(); 
    JsonObjectRequest jreq = new JsonObjectRequest(Request.Method.GET, url, 
      new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         int success = response.getInt("success"); 

         if (success == 1) { 
          JSONArray ja = response.getJSONArray("mydrugs"); 

          for (int i = 0; i < ja.length(); i++) { 

           JSONObject jobj = ja.getJSONObject(i); 
           HashMap<String, String> item = new HashMap<String, String>(); 
           item.put(ITEM_ID, jobj.getString(ITEM_ID)); 
           item.put(ITEM_NAME, 
             jobj.getString(ITEM_NAME)); 

           Item_List.add(item); 

          } // for loop ends 

          String[] from = { ITEM_ID, ITEM_NAME }; 
          int[] to = { R.id.item_name, R.id.item_id }; 

          adapter = new SimpleAdapter(
            getApplicationContext(), Item_List, 
            R.layout.list_items, from, to); 
          ListView myList = (ListView) findViewById(R.id.list_list_listView); 
          myList.setAdapter(adapter); 
          PD.dismiss(); 
          myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
           @Override 
           public void onItemClick(AdapterView<?> parent, View view, int position, 
                 long id) { 
            stock_list.add(Item_List.get(position)); 
            Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG).show(); 
            cart.setVisibility(View.VISIBLE); 
            cart.setOnClickListener(new View.OnClickListener() { 
             @Override 
             public void onClick(View v) { 
              Intent modify_intent = new Intent(grabedDb.this, 
                updatedata.class); 
              modify_intent.putStringArrayListExtra("stock_list", stock_list); 

              startActivity(modify_intent); 
             } 
            }); 



           } 
          }); 
         } // if ends 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      PD.dismiss(); 
     } 
    }); 

    // Adding request to request queue 
    MyApplication.getInstance().addToReqQueue(jreq); 

} 
} 
+0

A quoi avez-vous essayé –

+0

à quel problème faites-vous face? être clair avec la question –

+0

@madhuriHR ... chère j'ai ajouté mon code là ... dans ma question j'ai dit le problème sur quand j'ajoute l'élément cliqué à la nouvelle liste de tableau mon application s'est écrasé ... –

Répondre

0

Faites votre article Parcelable. Passez ensuite le tableau entier en tant que Parcelable dans l'intention via setExtra(), et récupérez-le avec getExtra().

+0

merci pour votre contribution ... allez-vous s'il vous plaît me montrer le code pour cela ... comment cela va fonctionner ... voir mon code ci-dessus et faire des suggestions ... merci cher ... –

+0

Voir http: // stackoverflow. com/questions/2139134/comment-envoyer-un-objet-d'une-android-activity-to-another-using-intentions – lionscribe

+0

chère ... il y a trop de code complexe et aussi des problèmes pointés dans les commentaires .. s'il vous plaît donnez-moi démo selon mon code donné ci-dessus ... merci d'avance ... s'il vous plaît une demande de me donner un exemple de code sm pour mon problème ... –

0

Bonjour remplacer votre code

myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
    long id) { 
     stock_list.add(Item_List.get(position)); 
     Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG).show(); 
     cart.setVisibility(View.VISIBLE); 
     cart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent modify_intent = new Intent(grabedDb.this, 
         updatedata.class); 
       modify_intent.putStringArrayListExtra("stock_list", stock_list); 

       startActivity(modify_intent); 
      } 
     }); 
    } 
}); 

avec cela,

myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
    long id) { 
     stock_list.add(Item_List.get(position)); 
     Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG).show(); 
     cart.setVisibility(View.VISIBLE); 
    } 
}); 

cart.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent modify_intent = new Intent(grabedDb.this, 
       updatedata.class); 
     modify_intent.putStringArrayListExtra("stock_list", stock_list); 

     startActivity(modify_intent); 
    } 
}); 

Espérons que cela fonctionnera .. !!