我有一个代码,向用户显示一个项目列表。列表项旁边有一个切换按钮。因此,当用户打开toggle时,就会触发警报。现在的问题是,当我设置列表中第一项的切换按钮时,当我滚动到列表视图的底部并再次回到第一项时,它消失和/或重置。我完全不明白为什么要把它设置为保持选中状态。在这个论坛里请求某人帮助我。
我的类CSVAdapter。我附在这里。
public class CSVAdapter extends ArrayAdapter<clock>{
Context ctx;
String line;
int position=-1;
ViewHolder myviewholder;
mrvtoparanur mp;
clock clk;
HashMap<Integer, Boolean> btnstate=new HashMap<Integer,Boolean>();
public CSVAdapter(Context context,int textViewResourceId, ArrayAdapter<clock> clk)
{
super (context,R.layout.checkbox,textViewResourceId);
this.ctx = context;
loadArrayFromFile();
}
static class ViewHolder
{
TextView text;
ToggleButton tb;
}
@Override
public View getView(final int pos,View convertView,final ViewGroup parent){
View row=convertView;
if(row==null){
LayoutInflater vi=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=vi.inflate(R.layout.checkbox, parent,false);
myviewholder.text=(TextView)convertView.findViewById(R.id.code);
myviewholder.tb=(ToggleButton)convertView.findViewById(R.id.checkBox1);
myviewholder=new ViewHolder();
position=pos;
row.setTag(myviewholder);
//Log.d("KEY", "VIEW CREATED NEWLY");
//myviewholder.tb.setChecked(btnstate.get(pos));
}
else
{
myviewholder=(ViewHolder)convertView.getTag();
Log.d("KEY", "VIEW RECYCLED");
btnstate.size();
btnstate.put(position, true);
}
myviewholder.text.setText(getItem(pos).getTime());
myviewholder.tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
//myviewholder.tb.setChecked(btnstate.get(position));
btnstate.putAll(btnstate);
btnstate.put(position, true);
}
});
return row;
}
private void loadArrayFromFile(){
try
{
InputStream is=ctx.getAssets().open("mrvtoparanur.csv");
BufferedReader reader=new BufferedReader(new InputStreamReader(is));
//Read each line
while((line = reader.readLine())!=null){
clock cur = new clock();
cur.setTime(line);
this.add(cur);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
您可以通过不同的方式实现此目的。一种方法是创建一个成员变量数组列表
。类似的东西
private HashMap<Integer, Boolean> btnState = new HashMap<Integer, Boolean>();
然后,当按钮状态为真时,只需
我们在getView()
中的位置,并将其添加为真
。然后,在 getView()
中,每次检查该位置的项目是真还是假,并使用该值设置状态。
public View getView(int pos,View convertView,final ViewGroup parent){
...
myviewholder.tb.setChecked(btnState.get(position);
在您的< code > onCheckChangedListener 中,您显然希望将该值添加到您的列表中
btnState.put(position, isChecked); // is checked is whatever value you use in your listener
您也可以使用SparseBooleanArray或<code>ArrayList
我有一个包含我的数据的listView,但我需要能够按下向上滚动的按钮(如果listView可以向上滚动)和向下滚动的按钮(如果listView可以向下滚动),而不是使用滚动条滚动 listView可以转到的最大Y位置 listView滚动到的当前Y位置 使用这些值,我可以编写其余的代码。
我有一个表单(带有一个boxlayout.y),它嵌套了ComponentGroup+手风琴+切换按钮。当用户展开手风琴(在ComponentGroup中)时,切换按钮列表(在手风琴中)很长,它不适合屏幕。 我的问题是如何在所有窗体中启用滚动。 下面的代码是代码结构的示例。实际代码是由我编写的复杂解析器生成的,该解析器从json输入自动生成UI:
问题内容: 我想要一个带有2个按钮(最终还有更多个按钮)的JFrame应用程序,我可以使用它们在多个重复动作之间进行切换,为简便起见,我现在仅使用控制台打印,尽管稍后可能会调用一个方法。这是JFrame的框架: 我尝试了以下方法: 但是当我单击一个按钮后,它一直停留在该打印件上,我什至无法再与这些按钮进行交互。我是否缺少某些东西,还是需要一个完全不同的结构?我已经检查了很多不同的程序,但是它们太复
主要内容:创建切换按钮,切换按钮组,ToggleButton行为,样式切换按钮切换按钮具有两种状态:选择或未选择。 我们通常将两个或多个切换按钮组合成一个组,并允许用户只选择一个按钮或不选择。 创建切换按钮 我们可以使用类的三个构造函数创建一个切换按钮。要创建没有任何字幕或图标的切换按钮。 要创建带有文字说明的切换按钮 要创建带有文字说明和图标的切换按钮。 方法可以将文本设置为,以及方法可以将图像安装到。 切换按钮组 切换组不强制选择至少一个按钮。单击所选的切换按钮可取消选
下面的代码为按钮添加缩放动画。 播放完动画后,我需要切换到其他活动。我试图建立如下逻辑: Android Studio发誓:新动画。动画监听器()
问题内容: 应用程序可以在四种不同的设备上正常运行。但是客户端在 Xperia z2 上的闪光按钮ON / OFF上面临崩溃。 主要活动 相机预览 崩溃报告。 问题答案: 应muku的要求。我自己回答。用于切换闪光灯 FlashOn和FlashOff方法是