gpt4 book ai didi

java - 在 ListView 中添加 onClickListener

转载 作者:行者123 更新时间:2023-12-01 12:25:36 24 4
gpt4 key购买 nike

我想为 Android 应用程序进行设置 Activity 。因此,我想制作一个带有图像、标题和开关(开/关)的自定义 ListView 。为了实现这一点,我制作了两个 xml 布局文件:activity_main.xml(包括 listview)和 mylist.xml(包括 ImageView (id=icon)、TextView(id=item) 和 Switch(id=switch1))

除此之外,我还制作了一个 CustomListAdapter.java 文件:

public class CustomListAdapter extends ArrayAdapter<String> {

private final Activity context;
private final String[] itemname;
private final Integer[] imgid;
private final Boolean[] status;

public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid, Boolean[] status) {
super(context, R.layout.mylist, itemname);
// TODO Auto-generated constructor stub

this.context=context;
this.itemname=itemname;
this.imgid=imgid;
this.status=status;
}

public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.mylist, null,true);

ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
Switch switchView = (Switch) rowView.findViewById(R.id.switch1);

imageView.setImageResource(imgid[position]);
txtTitle.setText(itemname[position]);
switchView.setChecked(status[position]);

return rowView;

};
}

和一个 MainActivity.java 文件:

public class MainActivity extends ListActivity {

String[] itemname ={
"Sound",
"Screen"
};

Integer[] imgid ={
R.drawable.sound,
R.drawable.screen,
};

Boolean[] status ={
false,
true,
};

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

CustomListAdapter adapter = new CustomListAdapter(this, itemname, imgid, status);
setListAdapter(adapter);

if (status[1] == true) {
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}

当我更改 boolean 值:状态时,我的脚本中开关的值会发生变化。此时,这段代码显示了一个toast,因为第二个listview-item中的switch的 boolean 值是:true。但是,当我关闭应用程序内的开关然后再次打开时,Toast 不会显示。

我猜这是因为当我点击开关时脚本不会再次重新运行。所以我想添加一个 onClickListener,因此当点击开关时,会发生一些事情(例如 toast )。

有人可以帮我在 ListView 中添加 onClickListener 吗?

最佳答案

在您的 getView 上,只需在 Switch 声明下方添加以下内容:

    Switch switchView = (Switch) rowView.findViewById(R.id.switch1);
switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
Toast.makeText(getContext(),"Switch is" + (b?" ":" not ") + "checked",Toast.LENGTH_LONG).show();
}
});

每当您单击开关时,都会显示一个 Toast。

关于java - 在 ListView 中添加 onClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26366145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com