Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 找不到符号方法setOnItemClickListener_Android_Onitemclicklistener - Fatal编程技术网

Android 找不到符号方法setOnItemClickListener

Android 找不到符号方法setOnItemClickListener,android,onitemclicklistener,Android,Onitemclicklistener,因此,我目前在我的应用程序上有一个返回的JSON对象列表,作为ListView,我正在尝试这样做,以便我可以单击该对象,然后编辑详细信息,但是我有点不明白为什么我的setOnItemClickListener不起作用,下面的代码 package mmu.tom.linkedviewproject; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import androi

因此,我目前在我的应用程序上有一个返回的
JSON
对象列表,作为
ListView
,我正在尝试这样做,以便我可以单击该对象,然后编辑详细信息,但是我有点不明白为什么我的
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);



    }


}
包mmu.tom.linkedviewproject;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
公共类MainActivity扩展了AppCompatActivity{
私有ListView GetAllDevicesListView;
私人JSONArray JSONArray;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.GetAllDevicesListView=(ListView)this.findViewById(R.id.GetAllDevicesListView);
新建GetAllDeviceTask().execute(新建ApiConnector());
GetAllDeviceTask.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
尝试
{
//获取已单击的设备
JSONObject deviceClicked=jsonArray.getJSONObject(位置);
//发送设备ID
Intent showDetails=newintent(getApplicationContext(),DeviceDetailsActivity.class);
showDetails.putExtra(“deviceID”,deviceClicked.getString(“deviceID”);
}
抓住(
JSONException e
)
{
e、 printStackTrace();
}
}
});
}
public void setListAdapter(JSONArray JSONArray){
this.jsonArray=jsonArray;
this.getAllDeviceListView.setAdapter((新的GetAllDeviceListViewAdapter(jsonArray,this));
}
私有类GetAllDeviceTask扩展了AsyncTask
{
@凌驾
受保护的JSONArray doInBackground(ApiConnector…参数){
//它在后台线程上执行
返回参数[0]。GetAllDeviceState();
}
@凌驾
受保护的void onPostExecute(JSONArray JSONArray){
setListAdapter(jsonArray);
}
}

}

您不是在
列表视图上设置
setOnItemClickListener
,而是在类名上设置

改变

GetAllDevicesTask.setOnItemClickListener (new AdapterView.OnItemClickListener() {


您没有获取列表视图对象

换成这个

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();
    }
}
});
GetAllDeviceListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
尝试
{
//获取已单击的设备
JSONObject deviceClicked=jsonArray.getJSONObject(位置);
//发送设备ID
Intent showDetails=newintent(getApplicationContext(),DeviceDetailsActivity.class);
showDetails.putExtra(“deviceID”,deviceClicked.getString(“deviceID”);
}
抓住(
JSONException e
)
{
e、 printStackTrace();
}
}
});

它应该是GetAllDeviceListView(变量不以大写字母开头!)。是的,您必须在ListView上设置itemClickListener,而不是GetAllDeviceTask的类名。这太完美了!非常感谢。我是在遵循一个在线指南,所以我几乎是在复制那里的代码,但我一定错过了什么!
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();
    }
}
});