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();
}
}
});