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