OnListItemClick将其存储到数组并将该数组传递给使用intent的下一个活动并将所有选定项目显示到Listview中

问题描述:

我很抱歉打扰你...但我已经在SO上搜索了我的问题但未能解决它...OnListItemClick将其存储到数组并将该数组传递给使用intent的下一个活动并将所有选定项目显示到Listview中

计划

我已经......我想填充凌空一个ListView当ListView控件的任何项目的用户点击,它都被选择(用户可以选择多个列表项),然后点击按钮,所有的所选项目显示在我的CartActivity的listView中。

(Actully,我工作的购物车类活动)

问题

我使用的ArrayList(myCartList)和onListItemClickListener方法,我将喜欢点击的项目的ArrayList(myCartList) :myCartList.add(getItem(position));

此按钮后单击该阵列将被传递到CartActivity和ListView中有显示...

代码如下

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

显示你试过的东西 –

+0

你面临什么问题?用问题清除 –

+0

@madhuriHR ...亲爱的我在那里添加了我的代码...在我的问题中,当我将点击项添加到新数组列表时,我的应用程序崩溃了... –

让您的项目Parcelable。然后通过setExtra()将整个数组作为Parcelable传递给intent,并通过getExtra()检索它。

+0

感谢您的贡献...请问我为它显示代码...它将如何工作...请参阅上面的代码并提出一些建议...谢谢亲爱的... –

+0

请参阅http:// *。 com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-intents – lionscribe

+0

亲爱的......有太多复杂的代码,也有问题指向评论。 。请根据我上面给出的代码给我演示...提前致谢...请给我sm代码示例我的问题... –

你好替换代码

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

与此,

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

希望它会工作.. !!