2017-01-01 76 views
0

祝大家新年快樂。 我遇到了onItemClickListener方法的問題,因爲當我嘗試敬酒位置和id時,在我的第二個活動中,我得到了零。 這裏是代碼,我依賴於陣列中圖像的位置,這就是爲什麼我需要準確地獲取位置/ ID。 + 我是重複我的數組在兩個活動,因爲我不知道如何從第二個活動訪問它?startActivity時出錯

MainActivity.java

package swe.trial; 
import android.content.Context; 
import android.widget.ImageView; 
import android.view.View; 
import android.view.ViewGroup; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.AdapterView; 
import android.widget.Toast; 



public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     GridView items = (GridView) findViewById(R.id.itemsList); 
     items.setAdapter(new item_adapter(this)); 
     items.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       //if an item is clicked or selceted,then go to the activity itemDetails: 
       Intent i= new Intent (MainActivity.this, itemDetails.class); 
       i.putExtra("position", position); 
       i.putExtra("id", id); 
       startActivity(i); 
      } 
     }); 

    } 

} 


class item_adapter extends BaseAdapter { 
    Integer[] picsId = { 
      R.drawable.pic1, 
      R.drawable.pic2, 
      R.drawable.pic3, 
      R.drawable.pic4, 
      R.drawable.pic5, 
      R.drawable.pic6, 
      R.drawable.pic7}; 
    private Context context; 


    public item_adapter(Context context) { 
     this.context = context; 
    } 


    public Object getItem(int position) { 
     return null; 
    } 


    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imgview= new ImageView(context); 
     imgview.setLayoutParams(new GridView.LayoutParams(250,250)); 
     imgview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imgview.setPadding(20,20,20,20); 

     imgview.setImageResource(picsId[position]); 
     return imgview; 
    } 


    public long getItemId(int position) { 
     return position; 
    } 
    public int getCount(){ 
     return picsId.length; 
    } 
} 

itemDetails.java

package swe.trial; 

import android.content.Context; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

import android.content.Intent; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.app.Activity; 
import android.net.Uri; 
import android.view.View; 
import android.widget.Toast; 

import java.util.ArrayList; 

/** 
* Created by good on 1/01/17. 
*/ 

public class itemDetails extends AppCompatActivity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.item); 
     ArrayList<item> items = new ArrayList<item>(); 
//  items item1= 
//  Bundle d = getIntent().getExtras(); 
     int id=0;getIntent().getIntExtra("id",id); 
     int position=0; 
     getIntent().getIntExtra("position", position); 
     Toast.makeText(this, "id= " +id + " . and posistion= "+ position, Toast.LENGTH_LONG).show(); 

     Integer[] picsId = { 
       R.drawable.pic1, 
       R.drawable.pic2, 
       R.drawable.pic3, 
       R.drawable.pic4, 
       R.drawable.pic5, 
       R.drawable.pic6, 
       R.drawable.pic7 
     }; 

     ImageView imgview = (ImageView) findViewById(R.id.item_image); 
     imgview.setImageResource(picsId[id+ 1]); 
     TextView txt= (TextView) findViewById(R.id.pricetxtview); 
     txt.setText("This is the description provided." + id); 
     //(id); 


//  item item1 = {"Red rose", "@/drawable/", 1, 1.25}; 
//  items.add(item1); 
     // now i will search for the array that holds the given id. and i will retrieve its info and display it again 
     // in the new layout. 

    } 
} 
+2

新年快樂!你的錯誤在哪裏! –

+0

你有沒有試過讓你的類實現onItemClickListener?如:public class MainActivity extends AppCompatActivity implements onItemClickListener –

+0

Charuka,錯誤是在獲取正確的位置和id發送到第二個活動,正是在這裏: int id = 0; 。getIntent()getIntExtra( 「ID」,ID); 但問題解決了。謝謝。 – Lujain

回答

0

你誤會,你應該使用意圖的方式。 正確的形式是這樣的:

int id =getIntent().getIntExtra("id",0); 
int position = getIntent().getIntExtra("position", 0); 

當您使用getIntExtra,第二個參數是默認值。如果您的意圖中沒有該標籤的值,它將返回該默認值。 查看Google docs瞭解更多信息

+0

謝謝你smartiz,你是對的我誤解了它。我認爲第一個參數是第一個活動在putExtra(「」,)中給出的字符串名稱。另外,你是對的,因爲我是初學者,並被要求開發一個購物應用程序。我不知道我將如何成功! – Lujain

+0

祝你在當前任務中成功@Lujain:D –

0

你必須按照下面的方式來獲取價值,

int id=0; 
int position=0; 
i=getIntent().getIntExtra("id",id); 
position= getIntent().getIntExtra("position", position); 
Toast.makeText(this, "id= " +id + " . and posistion= "+ position, Toast.LENGTH_LONG).show(); 
+0

我試過這個: Bundle received = getIntent()。getExtras(); int b = received.getInt(「position」); 它工作。 – Lujain

+0

@Lujain,如果您發現我的答案爲「已滿」,請將此答案標記爲「接受」,以便其他人將此答案視爲有用。 –