Android 如何通过列表视图中的切换按钮发送数据

Android 如何通过列表视图中的切换按钮发送数据,android,listview,android-togglebutton,Android,Listview,Android Togglebutton,因此,我对在android和整个android中列出视图是相当陌生的。我目前面临的问题是,我在列表视图中的每个项目上都有一个切换按钮,该切换根据从服务器读取的内容更改为打开或关闭 现在我的问题是,我不知道如何,甚至不知道从何处开始,使每个列表视图项的切换按钮都可以单击,然后发送按钮的新状态和设备ID(想法是它会打开或关闭灯) 我会把我的代码贴在下面。如果你还需要什么,请询问。我已经在这上面呆了一个星期了,快把我逼疯了 这是我的主要活动,它将项目的JSONarray拉入视图 package mmu

因此,我对在android和整个android中列出视图是相当陌生的。我目前面临的问题是,我在列表视图中的每个项目上都有一个切换按钮,该切换根据从服务器读取的内容更改为打开或关闭

现在我的问题是,我不知道如何,甚至不知道从何处开始,使每个列表视图项的切换按钮都可以单击,然后发送按钮的新状态和设备ID(想法是它会打开或关闭灯)

我会把我的代码贴在下面。如果你还需要什么,请询问。我已经在这上面呆了一个星期了,快把我逼疯了

这是我的主要活动,它将项目的JSONarray拉入视图

package mmu.tom.linkedviewproject;

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

import org.json.JSONArray;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "ShowDevice";
    private ListView GetAllDevicesListView;
    private JSONArray jsonArray;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i(TAG, "  OPened this");

        ImageButton button1 = (ImageButton) findViewById(R.id.image_button_new);

        button1.setOnClickListener(new View.OnClickListener() {
            Class ourClass;

            public void onClick(View v) {
                Intent i;
                i = new Intent(MainActivity.this, DeviceDetailsActivity.class);
                startActivity(i);
            }
        });
    }

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

据我所知,你在找这个

cell.ToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            if(isChecked)
            {
                //your action
            }
            else
            {
               //your action
            }
        }
    });

我已经见过几次了,但我不确定它会放在哪里,我试着把它放在列表视图适配器中,但它只是抛出了一些奇怪的错误,你知道把它放在哪里吗?你必须把它放在适配器的getView()方法中。。告诉我您正在获取的错误哪部分对不起,在if语句或try-catch中?在返回convertView之前,在if-else外部尝试,然后尝试catch。。首先,试着打印一些东西或一些土司来检查它是否正常工作。当我这样做时,它似乎找不到你给我的切换按钮侦听器,我会得到相同的日志,有代码和没有代码
cell.ToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            if(isChecked)
            {
                //your action
            }
            else
            {
               //your action
            }
        }
    });