2016-09-29 38 views
0

我需要幫助從列表視圖獲得當前項目,並在Android Studio中 (我需要通過ID,名稱register.java)的寄存器巡演將數據傳遞給其他活動 誰能幫我一步一步出來呢?如何在androidstudio項目的l​​istview中獲取當前項目並將日期傳遞給其他活動?

mainactivity代碼:

public class MainActivity extends BaseActivity{ 
private static final String TAG = MainActivity.class.getSimpleName(); 
private ListView listView; 
private FeedListAdapter listAdapter; 
private List<FeedItem> feedItems; 
private String URL_FEED = "http://host.com/android/index3.php"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.list); 
    feedItems = new ArrayList<FeedItem>(); 
    listAdapter = new FeedListAdapter(this, feedItems); 
    listView.setAdapter(listAdapter); 
    // We first check for cached request 
    Cache cache = AppController.getInstance().getRequestQueue().getCache(); 
    Entry entry = cache.get(URL_FEED); 
    if (entry != null) { 
     // fetch the data from cache 
     try { 
      String data = new String(entry.data, "UTF-8"); 
      try { 
       parseJsonFeed(new JSONObject(data)); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 

    } else { 
     // making fresh volley request and getting json 
     JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET, 
       URL_FEED, null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       VolleyLog.d(TAG, "Response: " + response.toString()); 
       if (response != null) { 
        parseJsonFeed(response); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      } 
     }); 
     // Adding request to volley request queue 
     AppController.getInstance().addToRequestQueue(jsonReq); 
    } 
} 
/** 
* Parsing json reponse and passing the data to feed view list adapter 
* */ 
private void parseJsonFeed(JSONObject response) { 
    try { 
     JSONArray feedArray = response.getJSONArray("feed"); 
     for (int i = 0; i < feedArray.length(); i++) { 
      JSONObject feedObj = (JSONObject) feedArray.get(i); 
      FeedItem item = new FeedItem(); 
      item.setId(feedObj.getInt("id")); 
      item.setName(feedObj.getString("name")); 
      // Image might be null sometimes 
      String image = feedObj.isNull("image") ? null : feedObj 
        .getString("image"); 
      item.setImge(image); 
      item.setprice(feedObj.getString("price")); 
      item.setintro(feedObj.getString("intro")); 
      item.setdate1(feedObj.getString("date1")); 
      item.setdate2(feedObj.getString("date2")); 
      item.setvalance(feedObj.getString("valance")); 
      // url might be null sometimes 
      String feedUrl = feedObj.isNull("url") ? null : feedObj 
        .getString("url"); 
      item.setUrl(feedUrl); 
      feedItems.add(item); 
     } 
     // notify data changes to list adapater 
     listAdapter.notifyDataSetChanged(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    switch (id) 
    { 
     case R.id.action_main: return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 
} 

和feeditem.java代碼:

public class FeedItem { 
private int id; 
private String name, price, image, intro, date1,date2,valance, url; 

public FeedItem() { 
} 

public FeedItem(int id, String name, String image,String price, String intro, 
       String date1, String date2,String valance, String url) { 
    super(); 
    this.id = id; 
    this.name = name; 
    this.image = image; 
    this.price = price; 
    this.intro = intro; 
    this.date1 = date1; 
    this.date2 = date2; 
    this.valance = valance; 
    this.url = url; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getImge() { 
    return image; 
} 

public void setImge(String image) { 
    this.image = image; 
} 

public String getprice() { 
    return price; 
} 

public void setprice(String price) { 
    this.price = price; 
} 

public String getintro() {return intro;} 

public void setintro(String intro) { 
    this.intro = intro; 
} 

public String getdate1() { 
    return date1; 
} 

public void setdate1(String date1) { 
    this.date1 = date1; 
} 
public String getdate2() { 
    return date2; 
} 

public void setdate2(String date2) { 
    this.date2 = date2; 
} 
public String getvalance() { 
    return valance; 
} 

public void setvalance(String valance) { 
    this.valance = valance; 
} 

public String getUrl() { 
    return url; 
} 

public void setUrl(String url) { 
    this.url = url; 
} 
} 

回答

0

試試這個裏面onCreate()

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.list); 
    ... 
    ... 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent intent = new Intent(MainActivity.this, YOUR_ACTIVITY.class); //YOUR_ACTIVITY is where you want to pass data 
      FeedItem feedItem = (FeedItem) listView.getItemAtPosition(position); 
      intent.putExtra("feed_item", feedItem); 
      startActivity(intent); 
     } 
    }); 
    ... 
    ... 
} 

在YOUR_ACTIVITY Activity,從意向獲取對象像下面

public class YOUR_ACTIVITY extends AppCompatActivity{ 
    ... 
    ... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     FeedItem feedItem = (FeedItem) getIntent().getSerializableExtra("feed_item"); 
     ... 
     ... 
    } 

} 

不要忘了在你的FeedItem課上實施Serializable

public class FeedItem implements Serializable { 
    ... 
    ... 
} 
+0

感謝的重播。但是當在listview中點擊時添加你的代碼nothapend! –

0

我跟蹤這段代碼,但當我點擊Item list Nothing Happen。 首先我的問題是,我不知道僱用setOnItemClickListener方法。 我沒有錯誤,沒有報警,但setOnItemClickListener不工作。 有什麼問題?

相關問題