簡體   English   中英

android如何將listview項目發送到另一個活動

[英]android How to send listview item to another activity

我試圖將行項目從列表視圖發送到另一個活動,但也許我做錯了。

我制作了一個用於食物的應用程序。 而且我希望當用戶單擊“第一個活動”時該列表視圖中的列表項被發送到“第二個活動”中,並且當用戶單擊“添加到購物車”時,列表視圖項轉到Cart.class

但是,當我單擊“添加到購物車”時,活動發送給我的是Cart.class,但沒有任何東西。

在cart.xml中,我有listvew。

對不起,我的英語不好

提前致謝。

第一次活動。

public class UnderCal extends Activity {


String classes[] = {"Grilled chicken","Asiago","Spicy"};


int[] meal = new int[]{
        R.drawable.grilledchicken,
        R.drawable.asiago,
        R.drawable.spicy


};

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);


    setContentView(R.layout.under_menu);



   final List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();

    for(int i=0;i<3;i++){
        HashMap<String, String> hm = new HashMap<String,String>();

        hm.put("food", Integer.toString(meal[i]));

        hm.put("txt", "" + classes[i]);

        aList.add(hm);

    }


    // Keys used in Hashmap
    String[] from = {"food","arrow","txt"};

    // Ids of views in listview_layout
    int[] to = { R.id.food,R.id.arrow,R.id.txt};

    // Instantiating an adapter to store each items
    // R.layout.listview_layout defines the layout of each item
    SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.list_layout, from, to);

    // Getting a reference to listview of main.xml layout file
    final ListView listView = ( ListView ) findViewById(R.id.mylist);

    // Setting the adapter to the listView
    listView.setAdapter(adapter);



    listView.setDivider(new ColorDrawable(0xffffffff));
    listView.setDividerHeight(1);


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {


            if (position == 0)
            {
                Intent intent = new Intent(UnderCal.this,GrilledChicken.class);

               // intent.putExtra("get", aList.get(position));


              String result = (String) listView.getItemAtPosition(position).toString();
              intent.putExtra("get",result);
              startActivity(intent);

                overridePendingTransition(R.anim.animation3, R.anim.animation4);




    }


    }
    });

}

第二次活動。

public class GrilledChicken extends Activity {


Button butadd;


//HashMap<String, String> hm;

String  list;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);


    setContentView(R.layout.grilled_chicken);


    //hash
   // hm =(HashMap<String, String>)getIntent().getSerializableExtra("get");


    Bundle extras = getIntent().getExtras();
    list = extras.getString("get");     

    butadd=(Button) findViewById(R.id.butadd);


    butadd.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub


            Intent intent = new Intent(GrilledChicken.this,Cart.class);
            // intent.putExtra("hm",hm);

            intent.putExtra("list",list);


            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivity(intent);

            }


    });

Cart.class

public class Cart extends Activity {


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    //Remove title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);


    setContentView(R.layout.cart);


    Bundle extras = getIntent().getExtras();
    String pos = extras.getInt("list");

     }
 }

為了從列表視圖中獲取項目,您必須編寫以下代碼。

String item = food.get(position).toString();

將此寫入您的Itemclick方法

將以下代碼放入您的Cart.class

Bundle extras = getIntent().getExtras();
 String   list_data = extras.getString("list"); 

現在list_data包含數據。

您還可以通過另一種方式完成任務。

創建一個單獨的全局類

Global.class

public class Globalclass {
    public static String list_data;

}

然后在您的FirstActivity替換以下內容

intent.putExtra("get",result);

Globalclass.list_data=result;

現在您可以在任何地方訪問list_data ,如下所示

String data=Globalclass.list_data;

嘗試一次,希望對您有所幫助。

首先在YourFirstActivity執行此YourFirstActivity

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(getActivity(), YourSecondActivity.class);
            YourModel yourModel = (YourModel) parent.getItemAtPosition(position);
            intent.putExtra("yourModel", yourModel);
            startActivity(intent);
        }
    });

在另一個Activity執行此操作。

YourModel yourModel= (YourModel) getIntent().getSerializableExtra("yourModel");

yourModel object您將把yourModelListView選定項的所有數據YourFirstActivityYourSecondActivity

多次發送ListView項目:-

 ArrayList<String>checked11 = new ArrayList<String>();
 SparseBooleanArray checked = listView1.getCheckedItemPositions();
 final ArrayList<String> selectedItems = new ArrayList<String>();

 for (int i = 0; i < checked.size(); i++) {
     int position = checked.keyAt(i);
     if (checked.get(i))
         selectedItems.add(checked11.get(position));
 }

 String[] outputStrArr = new String[selectedItems.size()];

  for (int i = 0; i < selectedItems.size(); i++) {
       outputStrArr[i] = selectedItems.get(i);
  }

使用捆綁包:

 Bundle bundle = new Bundle();
 Intent intent = new Intent(getApplicationContext(),
                                    OtherActivity.class);
 bundle.putStringArray("selectedItems", outputStrArr);
 intent.putExtra("screen2", "sub");
 intent.putExtras(bundle);
 intent.putExtra(EXTRA_RESPONSE, selected);
 startActivity(intent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM