所以我目前在我的應用程序中有一個返回的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);
}
}
}
它應該是getAllDevicesListView(變量不以大寫字母開頭!)。是的,你必須在ListView上設置itemClickListener,而不是GetAllDevicesTask的類名。 –