Android:当我启动新活动并按返回返回到它时,列表视图会自我复制

2023-12-29

我有两个列表视图,它们是视图寻呼机选项卡中的片段。当您单击列表视图中的项目时,它会启动一个新活动。但是,当我按后退按钮返回到选项卡式列表视图时,列表视图已加倍,如果我打开活动并再次返回,它会再次加倍,并且它将继续这样做。另外,我还有另一个带有五个选项卡的选项卡式列表视图,当我从其中一个视图移开两个选项卡时。当我返回时,该视图中的项目会加倍,这对于所有其他选项卡来说都是相同的。两个列表视图的代码是相同的。我尝试过 list.clear() ,它只是清除所有列表项,并使用视图持有者中的“else”语句(其他堆栈溢出答案推荐)。但每次列表视图仍然重复。另外,除非你还没有注意到,我对 Android 还很陌生。

以下是两个选项卡活动中的列表视图片段 (Due_Today_Fragment) 的代码。

      import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;


public class Due_Today_Fragment extends Fragment  {
    private List<homeworkdue> myhomeworkdue;

    static class ViewHolder {
        public ImageView imageView;
        public TextView HomeworkDueText;
        public TextView DescriptionText;
        public TextView TeacherText;
      }


    public static final String KEY_HOMEWORK="homework";
    public static final String KEY_DESC="desc";

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.activity_main, container, false); }


    @Override
    public void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        myhomeworkdue = new ArrayList<homeworkdue>();
        populatehomeworkdueList();
        populateListView();
        registerClickCallback();
    }

    private void registerClickCallback() {
        ListView list = (ListView)getView().findViewById(R.id.listView1);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {

                homeworkdue clickedhomeworkdue = myhomeworkdue.get(position);

                Intent intent = new Intent(getActivity(), homeworkdueDetailsActivity.class);
                intent.putExtra(KEY_HOMEWORK, clickedhomeworkdue.getHomeworkdue());
                intent.putExtra(KEY_DESC, clickedhomeworkdue.getDesciption());

                startActivity(intent);
            }
        });
        }


    private void populatehomeworkdueList() {
        myhomeworkdue.add(new homeworkdue("History Homework", "Description 1", R.drawable.global_studies, "Anderson"));
        myhomeworkdue.add(new homeworkdue("Math Homework", "Description 2", R.drawable.mathematics, "Klein"));
        myhomeworkdue.add(new homeworkdue("English Homework", "Description 3", R.drawable.english, "Reed"));
        myhomeworkdue.add(new homeworkdue("Spanish Homework", "Description 4", R.drawable.spanish, "Joya"));
        myhomeworkdue.add(new homeworkdue("Science Homework", "Description 5", R.drawable.science, "Poole"));
    }

    private void populateListView() {
        ArrayAdapter<homeworkdue> adapter = new MyListAdapter();
        ListView list = (ListView)getView().findViewById(R.id.listView1);
        list.setAdapter(adapter);


    }


    public class MyListAdapter extends ArrayAdapter<homeworkdue>  {
        public MyListAdapter() {
            super(getActivity(), R.layout.item_view, myhomeworkdue);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;

            if(convertView==null){
            convertView = getActivity().getLayoutInflater().inflate(R.layout.item_view, parent, false);
             holder = new ViewHolder();

             holder.imageView = (ImageView)convertView.findViewById(R.id.item_iconclass);

            holder.HomeworkDueText = (TextView) convertView.findViewById(R.id.item_texthomeworkdue);

            holder.DescriptionText = (TextView) convertView.findViewById(R.id.item_textdescription);

            holder.TeacherText = (TextView) convertView.findViewById(R.id.item_textteacher);

            convertView.setTag(holder);


            }

        else {
            holder = (ViewHolder) convertView.getTag();
        }

        homeworkdue currenthomeworkdue = myhomeworkdue.get(position);

        holder.imageView.setImageResource(currenthomeworkdue.getIconID());


        holder.HomeworkDueText.setText(currenthomeworkdue.getHomeworkdue());


        holder.DescriptionText.setText(currenthomeworkdue.getDesciption());


        holder.TeacherText.setText(currenthomeworkdue.getTeacher());

        return convertView;

    }

        }


}

以下是单击列表视图项时启动的活动的代码

    import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
import static com.bernard.beaconportal.Due_Today_Fragment.KEY_HOMEWORK;
import static com.bernard.beaconportal.Due_Today_Fragment.KEY_DESC;


public class homeworkdueDetailsActivity extends Activity {

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

        String homework = "";
        String desc = "";

        Intent intent = getIntent();
        if (null != intent) {
            homework = intent.getStringExtra(KEY_HOMEWORK);
            desc = intent.getStringExtra(KEY_DESC);
        }

        TextView headlineTxt = (TextView) findViewById(R.id.texthomeworkdue);
        headlineTxt.setText(homework);

        TextView pubdateTxt = (TextView) findViewById(R.id.textdescription);
        pubdateTxt.setText(desc);

    }


}

这是选项卡片段的代码

import java.lang.reflect.Field;
import com.actionbarsherlock.app.SherlockFragment;
import com.astuetz.PagerSlidingTabStrip;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragments2 extends SherlockFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.viewpager_main, container, false);
        // Locate the ViewPager in viewpager_main.xml
        ViewPager pager = (ViewPager) view.findViewById(R.id.viewPager);
        // Set the ViewPagerAdapter into ViewPager
        pager.setAdapter(new ViewPagerAdapter(getChildFragmentManager()));
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.pagerTabStrip);
        tabs.setViewPager(pager);

        return view;
    }

    @Override
    public void onDetach() {
        super.onDetach();
        try {
            Field childFragmentManager = Fragment.class
                    .getDeclaredField("mChildFragmentManager");
            childFragmentManager.setAccessible(true);
            childFragmentManager.set(this, null);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }
}

这是为家庭作业定义字符串的地方

public class homeworkdue {
    private String homework;
    private String desc;
    private int IconID;
    private String teacher;



    public homeworkdue(String homework, String desc, int IconID, String teacher) {



        super();
        this.homework = homework;
        this.desc = desc;
        this.IconID = IconID;
        this.teacher = teacher;
    }

    public String getHomeworkdue() {
        return homework;
    }
    public String getDesciption() {
        return desc;
    }   
    public int getIconID() {
        return IconID;
    }   
    public String getTeacher() {
        return teacher;
    }


    }

这是包含在五个选项卡中的片段的代码

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;


public class Thursday extends Fragment  {



    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.schedule_list_view, container, false); }

    private List<schedule> myschedule = new ArrayList<schedule>();



    static class ViewHolder {

        public TextView HomeworkDueText;
      }

    public void onStart() {
        super.onStart();

        populatescheduleList();
        populateListView();

    }


    private void populatescheduleList() {
        myschedule.add(new schedule("E Band"));
        myschedule.add(new schedule("G Band"));
        myschedule.add(new schedule("F Band"));
        myschedule.add(new schedule("H Band"));
        myschedule.add(new schedule("A Band"));
        myschedule.add(new schedule("C Band"));
        myschedule.add(new schedule("D Band"));
    }

    private void populateListView() {
        ArrayAdapter<schedule> adapter = new MyListAdapter();
        ListView list = (ListView)getView().findViewById(R.id.listView2);
        list.setAdapter(adapter);

    }


     public class MyListAdapter extends ArrayAdapter<schedule>  {
            public MyListAdapter() {
                super(getActivity(), R.layout.item_view, myschedule);
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder;

                if(convertView==null){
                    convertView = getActivity().getLayoutInflater().inflate(R.layout.schedule_list_item, parent, false);
                 holder = new ViewHolder();

                 holder.HomeworkDueText = (TextView) convertView.findViewById(R.id.bandText);

                convertView.setTag(holder);
                }

            else {
                holder = (ViewHolder) convertView.getTag();
            }

                schedule currenthomeworkdue = myschedule.get(position);

                holder.HomeworkDueText.setText(currenthomeworkdue.Band());

            return convertView;


        }

        }

}

这是为时间表定义字符串的地方

public class schedule {
    private String band;




    public schedule(String band) {



        super();
        this.band = band;

    }

    public String Band() {
        return band;


    }

}

如果您需要更多信息,请询问并提前感谢您的帮助

我两天来一直试图修复这个错误,但我却束手无策。


其背后的原因是,我们在创建片段时声明了一次新列表,因此当您返回片段时,它不会声明新列表,而是会使用旧列表。因此,为了解决这个问题,您需要将以下代码分成两部分:

private List<homeworkdue> myhomeworkdue = new ArrayList<homeworkdue>();

部分进入onResume在你的片段中你还需要删除onStart以及里面的一切onStart to onResume。但首先保留这样的声明:

private List<homeworkdue> myhomeworkdue;

并将其余部分移至onResume.

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    myhomeworkdue = new ArrayList<homeworkdue>();
    populatehomeworkdueList();
    populateListView();
    registerClickCallback();
}

你的第二个同样的问题ListView因为它们是相同的。

希望这对你有用。如果有效,请给我反馈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:当我启动新活动并按返回返回到它时,列表视图会自我复制 的相关文章

  • 使用 google Directions API 的地图视图绘制方向 - 解码折线

    我正在尝试使用 Google 方向 API 在我的地图视图上显示方向 但我在从 JSON 响应获取数据时遇到困难 我可以获得 级别 和 点 字符串 但无法弄清楚如何将它们解码为地图上的点 任何帮助将非常感激 我有一个类可以为您解码它们 添加
  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • Android 如何更改 OnTouchListener 上的按钮背景

    你好 我在 xml 中有一个按钮 我正在使用OnTouchListener在我的活动中获得button按下并释放 但问题是 当我按下按钮时背景颜色没有改变 当我延长可能的活动时OnClickListener背景正在改变 任何人都可以告诉我的
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • Android onChange 事件未在 android 5 (Lollipop) 上的 chrome 历史记录的 contentObserver 中触发

    我注意到我的 chrome 历史记录和书签的 contentObservers 在 android lolipop 上不再触发 该代码在旧版本的 android 上完美运行 无论 chrome 版本如何 但在 Lollipop 上它不再运行
  • Android 应用程序中的 Eszett (ß)

    我的 res layout activity 文件中的德语 字符在我的应用程序中自动转换为 ss 即使我将语言和键盘设置为德语 它仍然不会显示 Android 中可以显示 吗 edit
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 使用 PhoneGap 使 Android 应用程序易于访问(对于残障人士)

    有人有过使用 PhoneGap 使 Android 应用程序可访问的经验吗 至少我们需要使我们的应用程序符合第 508 条规定 我尝试实现一些标准的辅助功能 文本框标签 向 div 添加标题属性等 但是 当在 Android 中使用 Tal
  • 在 React Native 中调试应用程序崩溃

    我是 React Native 新手 我正在尝试安装 React Native Facebook SDK 以便我可以使用我的应用程序进行 Facebook 登录 我按照此处列出的步骤操作 https tylermcginnis com in
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • HERE 地图:更改路线已行驶部分的颜色

    导航时可以改变路线的颜色吗 具体来说 我希望路线中已行驶的部分的颜色与即将行驶的部分的颜色不同 现在都是同一个颜色 将 MapRoute 对象的 TravelColor 变量设置为透明对我来说很有效 mapRoute color Resou
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • 使用单选按钮更改背景颜色 Android

    我试图通过从单选组中选择单选按钮来更改应用程序选项卡的背景 但是我不确定如何执行此操作 到目前为止我已经 收藏夹 java import android app Activity import android os Bundle publi
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈

随机推荐

  • 如何使用 rand-int 生成可重复的随机序列

    我希望能够使用生成可重复的数字rand在 Clojure 中 具体来说 我想要调用的结果rand nth或Incanter的sample可重复 这些称为rand int这又调用rand 我想通了这个问题 https stackoverflo
  • 如何从静态方法访问控件?

    我有一个 C NET 应用程序 其中有一个MainForm和几节课 这些类之一接收来自网络的传入数据消息 我需要将这些消息的文本附加到多行文本框中MainForm 我可以将消息发送到中的方法MainForm通过使方法静态 但静态方法无法访问
  • 两个交互类的基于可变参数模板的多重继承...

    在我当前的项目中 我需要能够提供基于模板的多重继承 Mixin 模式 and有两个可以一起交互的类 具有镜像多重继承树 即一个类在同一继承级别使用另一个类的方法 长话短说 我似乎找不到一种优雅的方式来构建它 下面是一个简化的测试用例 您可以
  • 设置参考号并将其与文本文件中的其他数据进行比较

    该项目基于眼动仪 让我简要介绍一下该项目背后的想法 以便更好地理解我的问题 我有 Tobii C 眼动仪的硬件 这个眼动仪将能够给出我正在看的地方的 X Y 坐标 但这个装置非常敏感 当我看 1 个点时 眼动仪会发出许多不同的坐标数据 但在
  • Rails 应用程序内的 AMQP 订阅者

    是否可以使用我的 Rails 应用程序启动 AMQP 订阅者 可能通过初始化程序或其他东西 我想让它同时运行 也可以与 Rails 模型交互 下面是我的意思的伪代码示例 queue subscribe do msg body Foo cre
  • Asp 控制转发器内的 Id 生成

    我在中继器 itemtemplate 中定义了一些控件 问题出在自动生成的 Id 上 这是我的页面
  • 使用 CALayer 时无法编译代码

    由于某种原因 当我尝试使用 CALayer 时出现链接器错误 OBJC CLASS CALayer referenced from 我导入了以下标头 import
  • PropertyWrapper 中不存在的 Codable 属性的默认值

    我创建了一个像这样的propertyWrapper propertyWrapper public struct DefaultTodayDate Codable public var wrappedValue Date private le
  • 如何使用 JavaScript 将音频静音/取消静音

    我在这里创建了我的函数的小提琴 http jsfiddle net rhy5K 10 http jsfiddle net rhy5K 10 现在我想为用户提供声音 静音 取消播放 选项 例如 如果我点击 一个链接 那么声音就像Get rea
  • 为什么用“to_excel”保存时pandas数据框样式丢失?

    Per 这个例子 https pandas pydata org pandas docs stable user guide style html Export to Excel the to excel方法应保存带有背景颜色的 Excel
  • 显示“页面加载”消息

    我试图在 html 页面中显示用于 页面加载 的图像 gif 直到显示 my script py 的输出 但我不知道该怎么做 This http jsfiddle net 9X4gW 这是我到目前为止所得到的 提前谢谢了 HTML div
  • 使用反射从字符串获取属性值

    I am trying implement the Data transformation using Reflection https web archive org web 20210122135227 http geekswithbl
  • 最后的手段/万能的/后备模板过载

    正如我之前提出的一个问题所示 重载解析 模板和继承 https stackoverflow com questions 28405921 overload resolution templates and inheritance 28406
  • 组织我的 Python 项目

    我正在启动一个 Python 项目 预计其中有 20 个或更多类 作为良好的做法 我想将它们分别放入一个单独的文件中 然而 项目目录很快就会被文件淹没 或者当我这样做时 如果我将要导入的文件放入文件夹中 我将无法再导入它 如何从另一个文件夹
  • FastAPI 中的可选查询参数

    我不明白可选查询参数 https fastapi tiangolo com tutorial query params optional parameters在 FastAPI 中 它与什么不同默认查询参数 https fastapi ti
  • 在Java中读取IDX文件类型

    我已经用 Java 构建了一个图像分类器 我想针对此处提供的图像进行测试 http yann lecun com exdb mnist http yann lecun com exdb mnist 不幸的是 如果您下载 train imag
  • Jasper 报告导出到 pdf 时出现字体大小问题

    我正在使用 Jaspersoft Studio 5 6 它在 Jaspersoft Studio 的设计视图中正确显示 在预览视图中 它也可以正确显示 使用 java 或 pdf 当我从 Java 应用程序执行报告时 三个文本以相同的大小显
  • jQuery 自动完成中未定义的结果

    所以我已经运行了最新版本的 jQuery 和 UI 我正在使用基本的自动完成调用并返回有效的 JSON 通过 JSONLint 验证 input cust id autocomplete source yoda app base asset
  • 为什么我没有 keras.applications 模块?

    from scipy misc import imsave import numpy as np import time from keras applications import vgg16 from keras import back
  • Android:当我启动新活动并按返回返回到它时,列表视图会自我复制

    我有两个列表视图 它们是视图寻呼机选项卡中的片段 当您单击列表视图中的项目时 它会启动一个新活动 但是 当我按后退按钮返回到选项卡式列表视图时 列表视图已加倍 如果我打开活动并再次返回 它会再次加倍 并且它将继续这样做 另外 我还有另一个带