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:当我启动新活动并按返回返回到它时,列表视图会自我复制 的相关文章

  • 如何从命令行向 Android 项目添加外部 jar 库

    我正在尝试构建一个具有一些依赖项的 Android 项目 jar 文件位于 lib 目录中 我可以通过将这些 jar 文件添加到我的类路径来构建项目 但当然它会在模拟器中强制关闭 因为这些库不存在 我正在使用 ant 从命令行执行此操作 n
  • Java-Android 上的 MulticastSocket 问题

    我开始使用 MulticastSocket 进行编码 尝试制作一个带有客户端和服务器的简单应用程序来发送消息 我的服务器代码 import java io IOException import java net DatagramPacket
  • 如何在android中播放音频文件

    我的 Android 手机中有一个 mp3 文件 让它在我的 SD 卡中的某个位置成为 xyz mp3 如何通过我的应用程序播放它 只需您就可以使用MediaPlayer并播放音频文件 查看这个很好的例子 http www helloand
  • 安卓中的界面

    我在 android 中编写了一个包含图像和视频视图的表格布局 我想在 android 中编写一个界面 它将在不干扰我的布局的情况下获取图像以及数据和视频 该数据可以采用任何形式 来自任何来源 并且必须通过接口提供给布局 我应该如何为我在a
  • 使所有打开的文档选项卡可见

    我想查看我在 Visual Studio 中打开的所有文件或文档 我不希望它们自动隐藏或溢出时隐藏 我怎样才能实现它 执行此操作的内置选项之一 使用固定选项卡 http dailydotnettips com 2016 01 21 pers
  • android 如何延迟执行

    我正在构建一款具有人工智能功能的安卓棋盘游戏 AI 轮流执行 必须调用一系列操作 然后将无效信息发布到我的自定义视图中进行更新 我需要放慢这些动作的速度 以便用户能够看到人工智能正在轮到它 而不是它一闪而过 我已经尝试过一些类似的事情 tr
  • 为什么线性布局 maxHeight 不起作用?

    这是我的布局 我在线性布局上设置了最大和最小高度 但最大高度似乎不起作用 事实上如果TextView R id testo有很多文本 不会被修剪 如果我设置固定高度 则不会发生这种情况 但我不想设置固定高度 以便在选择溢出屏幕模式时正确调整
  • 罐子不匹配!修复使用 appcompat_v7 和 Facebook sdk 时的依赖关系。

    我在我的项目中使用 appcompat v7 库和 facebook sdk 并且这两个库都有 android support v4 jar 如果我删除任何 jar 则相应的库将无法工作 并且不允许同时拥有这两个 jar 我应该怎么办 请帮
  • 使对话框/活动始终位于顶部

    如何将对话框 活动保持在其他活动之上 无论用户是否在活动之间切换 它都应该始终处于活动状态 您可以使用相对布局作为父级 通过使用相对布局 您可以重叠其他布局 所以 你必须使用相对布局的两个子布局 在一个孩子中 您将弹出窗口 而在另一种布局中
  • 围绕右下角对齐图像

    我正在使用相对布局将一个较小的图像叠加在较大的图像之上 我希望较小图像的右下角与较大图像的 B R 角重合 我在布局 XML 中使用边距参数 指定倾斜测量 但这似乎不适用于所有设备和分辨率 在某些情况下 小图像会从边框移动 4 5 像素 是
  • 在处理器生成的类中使用库

    我正在开发一个库来使用注释和处理器生成类 生成的类应该使用Gson来自谷歌的图书馆 我的问题是 我应该在哪里添加 Gson 依赖项 我目前正在将其添加到处理器 build gradle 中 但是当生成类时 找不到 Gson Android
  • 检测已退款的托管应用内购买 android IAP 2.0.3

    我无法弄清楚如何使用 Android 检测何时为托管 不可消费 应用内产品发放退款com android billingclient billing 2 0 3 这个问题似乎相当深 尽管我可能让它变得比应有的更复杂 首先 我进行了一次测试购
  • 在Android中获取Fragment中的应用程序上下文?

    我已通过在一个活动中使用应用程序上下文将一些数据存储到全局类中 稍后我必须在片段中检索这些值 我已经做了类似的事情来存储在全局类中 AndroidGlobalClass AGC AndroidGlobalClass getApplicati
  • Android asmack:stateChange 从未被调用

    我正在使用 asmack xmpp 客户端构建一个聊天应用程序 聊天工作正常 我已经实施了ChatStateListener but stateChanged方法永远不会被调用 目前 为了获取撰写状态 我正在解析消息 xml 以下是撰写 文
  • Android 中的 Sqlite 全文搜索对非英语字符的 Unicode 支持

    滚动到末尾以跳过说明 背景 在我的 Android 应用程序中 我想使用非英语 Unicode 文本字符串来搜索存储在 SQLite 数据库中的文本文档 字段中的匹配项 我了解到 所以我认为 我需要做的是实施一个使用 fts3 fts4 进
  • `.gitignore` 用于具有 Android 目标的 Ionic 项目

    我正在使用 Capacitor 创建一个 Ionic 项目 编辑 与 Cordova 相比更新的推荐框架 并添加 Android 作为目标 我已经能够构建应用程序并添加 Android 目标 这会在android using ionic b
  • Android 屏幕上的触摸事件

    我想找出当用户触摸 Android 的任何屏幕时发生的任何事件 我发现特定活动的触摸事件 但不是所有屏幕 请给我一个 解决方案 试试这个代码 Override public boolean onTouchEvent MotionEvent
  • 使用 MediaRecorder 录制屏幕特定视图

    我想录制特定的屏幕视频View链接只想记录里面执行的动作LinearLayout 现在 MediaRecorder正在录制整个屏幕 如何录制屏幕的特定部分 MediaRecorder 通过媒体投影API 记录整个屏幕 至少从 Android
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto
  • Android 数据库(SQLite)从空表返回非空游标

    我使用 SQLite 数据库浏览器验证该表不包含任何行 我单步执行查询生成器代码来获取生成的查询 并在 SQLite 数据库浏览器中运行该查询 查询返回零行 但是 Android 的 SQLiteQueryBuilder query 方法返

随机推荐

  • 如何使用 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:当我启动新活动并按返回返回到它时,列表视图会自我复制

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