2016-06-07 27 views
-3

我想實現這種方法到我的編碼,但我不知道如何去做,有人可以給我一些建議,如何做到這一點?想要實現View.OnItemClickListener

下面是我想要使用的編碼的屏幕截圖。

View.ONItemClickListener

,這是我的編碼。 ViewOrder.java

public class ViewOrder extends AppCompatActivity implements ListView.OnItemClickListener { 
public static final String JSON_URL = "http://dashberry.com/strack/mobile/viewOrder.php"; 
private ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_order); 
    listView = (ListView) findViewById(R.id.listView); 
    sendRequest(); 
} 

private void sendRequest(){ 

    StringRequest stringRequest = new StringRequest(JSON_URL, new Response.Listener<String>() { 
     public void onResponse(String response) { 
      showJSON(response); 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(ViewOrder.this,error.getMessage(),Toast.LENGTH_LONG).show(); 

       } 
     }); 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 

private void showJSON(String json){ 

    ParseJSON pj = new ParseJSON(json); 
    pj.parseJSON(); 
    CustomList cl = new CustomList(this, ParseJSON.itemName,ParseJSON.origin,ParseJSON.destination); 
    listView.setAdapter(cl); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Intent intent = new Intent(this, ItemDetail.class); 
    //ParseJSON<String> map = (ParseJSON)parent.getItemAtPosition(position); 
    //HashMap<String,String> map = (HashMap)parent.getItemAtPosition(position); 
    // String empId = map.get(ParseJSON.itemName).toString(); 
    // intent.putExtra("item_id", empId); 
    startActivity(intent); 
} 

} 

ParseJSON.java

public class ParseJSON { 
public static String[] itemName; 
public static String[] origin; 
public static String[] destination; 

public static final String JSON_ARRAY = "result"; 
public static final String KEY_NAME = "itemName"; 
public static final String KEY_ORIGIN = "origin"; 
public static final String KEY_DESTINATION = "destination"; 

private JSONArray users = null; 

private String json; 



public ParseJSON(String json){ 

    this.json = json; 
} 

protected void parseJSON(){ 
    JSONObject jsonObject=null; 
    try { 
     jsonObject = new JSONObject(json); 
     users = jsonObject.getJSONArray(JSON_ARRAY); 

     itemName = new String[users.length()]; 
     origin = new String[users.length()]; 
     destination = new String[users.length()]; 

     for(int i=0;i<users.length();i++){ 
      JSONObject jo = users.getJSONObject(i); 
      itemName[i] = jo.getString(KEY_NAME); 
      origin[i] = jo.getString(KEY_ORIGIN); 
      destination[i] = jo.getString(KEY_DESTINATION); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

}

所以基本上我想要的是,當用戶單擊列表中的項目,將採取用戶到下一個活動與一些數據(itemName)。

回答

0

實施onItemClick像

 @Override 
    public void onItemClick(AdapterView<?> l, View v, int position, long id) { 
       //start a new Activity via Intent 
       Intent intent = new Intent(); 
       intent.setClass(this, ItemDetail.class); 

//you can putExtra only position or id 
       intent.putExtra("position", position); 
       intent.putExtra("id", id); 
       startActivity(intent); 
     } 

你應該創建一個名爲ItemDetail花葯活動你可以通過在onCreate()添加此代碼知道哪個項目被點擊

Intent intent = getIntent(); 
String position = intent.getStringExtra("position"); 
String id = intent.getStringExtra("id"); 
+0

感謝在評論ID和位置我問題,它真的幫助我思考。這是否意味着我無法在列表中攜帶其中一項數據?例如,我只想攜帶我們點擊的列表的itemname。 @NgimaSherpa – user4706780

+1

是的,這是可能的。您可以使用putExtra()方法從一個活動發送數據,並可以從前一活動發送的其他活動中獲取數據。 –