我有两个列表视图,它们是视图分页选项卡中的片段。当您单击列表视图中的项目时,它会启动一个新活动。但是当我按下后退按钮返回选项卡列表视图时,列表视图已经翻倍,如果我打开活动并再次返回,它会再次翻倍,并且会继续这样做。我还有另一个选项卡列表视图,其中包含五个选项卡,当我离开其中一个视图两个选项卡时。当我回到该视图时,该视图中的项目会翻倍,其他所有选项卡都是一样的。两个列表视图的代码是相同的。我尝试过list.clear(),它只是清除了所有列表项,并在视图持有者中使用了“其他”语句(其他堆栈溢出答案推荐)。但是每次列表视图仍然重复。除非你还没有注意到我对android还很陌生。
下面是两个选项卡式活动中的列表视图片段(Due\u Today\u片段)的代码。
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;
}
}
}
这里是为schedule定义字符串的地方
public class schedule {
private String band;
public schedule(String band) {
super();
this.band = band;
}
public String Band() {
return band;
}
}
如果您需要任何更多的信息只是要求并感谢您提前为帮助
我已经尝试修复这个错误两天了,我一筹莫展。
当我在使用Recycler view时,也遇到了同样的问题。对我来说,在onResume()方法中清除recyclerView解决了这些问题。
@Override
public void onResume() {
super.onResume();
usersList.clear();
}
这里的userList是我添加到回收视图中的列表。希望它也能对你起作用。
或者只需调用clear()
方法;如果没有它,它会在调用新数据时一直保持在那里。
背后的原因是,我们在创建片段时会声明一个新列表,因此当您返回到片段时,它不会声明新列表,而是使用旧列表。因此,为了解决这个问题,您需要将以下代码分为两部分:
private List<homeworkdue> myhomeworkdue = new ArrayList<homeworkdue>();
部分放在片段中,您还需要删除片段中的所有内容,并将其中的所有内容删除到片段中。但首先要这样声明:
private List<homeworkdue> myhomeworkdue;
并将其余部分移动到onResume
。
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
myhomeworkdue = new ArrayList<homeworkdue>();
populatehomeworkdueList();
populateListView();
registerClickCallback();
}
在您的第二个ListView
中存在相同的问题,因为它们是相同的。
希望这对你有用。如果有效,请给我反馈。
我正在制作一个应用程序,其中有一个“MainActivity.class”,它有一个按钮“Edit profile”,可以引导另一个活动,称为“Editprofile.class”。它(MainActivity)还有一个文本视图,显示一个字符串(名称)。 Editprofile.class接受来自用户的字符串,按下添加按钮后,新的字符串会更新到数据库中,替换以前的字符串。现在,当更新后,用户通过后
问题内容: 在我的应用程序中,我有两个活动。首先是启动屏幕,它仅显示应用程序名称和其他一些信息。单击初始屏幕活动后,我正在加载主要活动。我的应用程序运行正常,但遇到一个小问题。如果我从主要活动中按返回按钮,则控件将启动初始屏幕活动。但我不想再次显示启动画面活动,我想避免在按“后退”按钮时启动画面。 可能吗?如果可以,怎么办? 问题答案: 在文件中,在初始屏幕中添加属性。
我在中有显示类别列表的片段,我想在用户单击类别项目时添加一个选项,应该开始一个新活动()其中包含一个显示文章列表的片段。 问题是,当我使用打开活动的方法Intent时,我会出现多个错误。 这是我的MainActivity2: 这是我把我的重定向: 这是我的日志:
当我点击listview项时,我试图启动一个活动。但是当我运行程序时,我得到了一些错误,比如: list_layout.xml
我想在Android上启动另一个活动,但出现以下错误: 请指定构造函数调用;分类器Page2没有伴随对象 实例化类后。我应该怎么做来纠正错误?我的代码:
问题内容: 我有一个Rails应用程序,我想在机器启动时自动启动服务器。现在,我进入目录,然后键入命令。如何配置机器以在引导时运行Rail服务器?我正在使用Ubuntu和Rails 3.0.0。 问题答案: 您可以为此使用cron作业。要添加cron作业,请使用命令。比您可以定义一个cron作业,该作业在启动时运行,然后使用重新启动。 所以你会有类似的东西: