当前位置: 首页 > 知识库问答 >
问题:

滚动listview时切换按钮重置

昌乐生
2023-03-14

我有一个代码,向用户显示一个项目列表。列表项旁边有一个切换按钮。因此,当用户打开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();
        }

}
}

共有1个答案

黄俊雄
2023-03-14

您可以通过不同的方式实现此目的。一种方法是创建一个成员变量数组列表。类似的东西

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方法是