想要实现View.OnItemClickListener

时间:2016-06-07 01:08:05

标签: java android android-studio

我想在我的编码中实现这个方法,但我不知道怎么做,有人可以给我一些关于如何做的建议吗?

下面是我想要使用的编码截图。

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)进行下一个活动。

1 个答案:

答案 0 :(得分:0)

实现onItemClick like

        @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的Anther Activity,您可以通过在onCreate()中添加此代码来获取ID和位置,以了解被点击的项目

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