2016-02-12 91 views
0

所以我目前在我的應用程序中有一個返回的JSON對象的列表,作爲ListView,我試圖讓它可以點擊對象然後編輯細節,但是我在一個小的損失的,爲什麼我的setOnItemClickListener不能正常工作,下面的代碼找不到符號方法setOnItemClickListener

package mmu.tom.linkedviewproject; 

import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 


import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class MainActivity extends AppCompatActivity { 

private ListView GetAllDevicesListView; 
private JSONArray jsonArray; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    this.GetAllDevicesListView = (ListView) this.findViewById(R.id.GetAllDevicesListView); 

    new GetAllDevicesTask().execute(new ApiConnector()); 

    GetAllDevicesTask.setOnItemClickListener (new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 

     try 

     { 
      //GetDevice that was clicked 
      JSONObject deviceClicked = jsonArray.getJSONObject(position); 


      //Send DeviceId 
      Intent showDetails = new Intent(getApplicationContext(), DeviceDetailsActivity.class); 
      showDetails.putExtra("deviceID", deviceClicked.getString("deviceID")); 
     } 

     catch(
     JSONException e 
     ) 

     { 
      e.printStackTrace(); 
     } 
    } 
    }); 

} 

public void setListAdapter(JSONArray jsonArray){ 

    this.jsonArray = jsonArray; 
    this.GetAllDevicesListView.setAdapter((new GetAllDeviceListViewAdapter(jsonArray,this))); 


} 

private class GetAllDevicesTask extends AsyncTask<ApiConnector,Long,JSONArray> 
{ 
    @Override 
    protected JSONArray doInBackground(ApiConnector... params) { 

     // it is executed on Background thread 

     return params[0].GetAllDevicesState(); 
    } 

    @Override 
    protected void onPostExecute(JSONArray jsonArray) { 

    setListAdapter(jsonArray); 



    } 


} 

}

+0

它應該是getAllDevicesListView(變量不以大寫字母開頭!)。是的,你必須在ListView上設置itemClickListener,而不是GetAllDevicesTask的類名。 –

回答

0

你不採取列表視圖對象。

更改爲此。

GetAllDevicesListView.setOnItemClickListener (new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 

    try 

    { 
     //GetDevice that was clicked 
     JSONObject deviceClicked = jsonArray.getJSONObject(position); 


     //Send DeviceId 
     Intent showDetails = new Intent(getApplicationContext(), DeviceDetailsActivity.class); 
     showDetails.putExtra("deviceID", deviceClicked.getString("deviceID")); 
    } 

    catch(
    JSONException e 
    ) 

    { 
     e.printStackTrace(); 
    } 
} 
}); 
+0

這很完美!謝謝!我正在關注一個在線指南,所以我幾乎複製了代碼,但我一定錯過了一些東西! – Tfish

+0

@TomFisher歡迎您的朋友! –

0

你是不是在ListView但在一個類名設置setOnItemClickListener

變化

GetAllDevicesTask.setOnItemClickListener (new AdapterView.OnItemClickListener() { 

GetAllDevicesListView.setOnItemClickListener (new AdapterView.OnItemClickListener() {