cuốn sách gpt4 ai đã làm

Android: Khi tôi bắt đầu một Hoạt động mới và nhấn quay lại để quay lại, Chế độ xem danh sách sẽ tự sao chép

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 20:37:39 27 4
mua khóa gpt4 Nike

Tôi có hai ListView là các đoạn trong tab Xem phân trang. Khi bạn nhấp vào một mục trong ListView, nó sẽ bắt đầu một Hoạt động mới. Nhưng khi tôi nhấn nút quay lại để quay lại ListView theo thẻ, ListView đã tăng gấp đôi, nếu tôi mở Hoạt động và quay lại, nó sẽ tăng gấp đôi lần nữa và tiếp tục như vậy. Tôi có một ListView theo thẻ khác có năm tab và khi tôi rời khỏi một trong các Chế độ xem thì có hai tab. Khi tôi quay lại với chúng, các mục trong Chế độ xem đó sẽ tăng gấp đôi, điều này giống nhau đối với tất cả các tab khác. Mã cho cả hai ListView đều giống nhau. Tôi đã thử list.clear(), thao tác này chỉ xóa tất cả các mục trong danh sách và sử dụng câu lệnh "else" trong ngăn chứa Chế độ xem (được các câu trả lời Stack Overflow khác khuyến nghị). Nhưng ListView vẫn lặp lại mọi lúc. Ngoài ra, trừ khi bạn không nhận thấy tôi khá mới với Android.

Đây là mã cho đoạn ListView (Due_Today_Fragment) trong Hoạt động tab kép.

      nhập java.util.ArrayList;
nhập java.util.List;

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


lớp công khai Due_Today_Fragment mở rộng Fragment {
Danh sách riêng myhomeworkdue;

lớp tĩnh ViewHolder {
Chế độ xem hình ảnh công khai Chế độ xem hình ảnh;
TextView công khai Bài tập về nhàDueText;
Văn bản mô tả TextView công khai;
TextView công khai của TeacherText;
}


Chuỗi cuối cùng tĩnh công khai KEY_HOMEWORK="bài tập về nhà";
Chuỗi cuối cùng tĩnh công khai KEY_DESC="desc";

Chế độ xem công khai trênCreateView(Trình tăng LayoutInflater, vùng chứa ViewGroup, Gói đã lưuInstanceState){
trả về inflater.inflate(R.layout.activity_main, container, false });


@Ghi đè
khoảng trống công khai trênResume() {
// TODO sơ khai phương thức được tạo tự động
super.onResume();
myhomeworkdue = new ArrayList();
điền bài tập về nhàdueList();
cưListView();
registerClickCallback();
}

đăng ký void riêng tưClickCallback() {
Danh sách ListView = (ListView)getView().findViewById(R.id.listView1);
list.setOnItemClickListener(AdapterView mới.OnItemClickListener() {

public void onItemClick(AdapterView parent, View viewClicked, int location, long id) {

bài tập về nhà do clickedhomeworkdue = myhomeworkdue.get(position);

Ý định ý định = Ý định mới (getActivity(), bài tập về nhàdueDetailsActivity.class);
ý định.putExtra(KEY_HOMEWORK, clickedhomeworkdue.getHomeworkdue());
ý định.putExtra(KEY_DESC, clickedhomeworkdue.getDesciption());

startActivity(ý định);
}
});
}


khoảng trống riêng tư trong bài tập về nhàdueList() {
myhomeworkdue.add (bài tập về nhà mới ("Bài tập về nhà lịch sử", "Mô tả 1", R.drawable.global_studies, "Anderson"));
myhomeworkdue.add (bài tập về nhà mới ("Bài tập toán", "Mô tả 2", R.drawable.mathematics, "Klein"));
myhomeworkdue.add(new homeworkdue("Bài tập về nhà bằng tiếng Anh", "Mô tả 3", R.drawable.english, "Reed"));
myhomeworkdue.add(new homeworkdue("Bài tập về nhà bằng tiếng Tây Ban Nha", "Mô tả 4", R.drawable.spanish, "Joya"));
myhomeworkdue.add (bài tập về nhà mới ("Bài tập về nhà khoa học", "Mô tả 5", R.drawable.science, "Poole"));
}

khoảng trống riêng tư populateListView() {
ArrayAdapter adapter = new MyListAdapter();
Danh sách ListView = (ListView)getView().findViewById(R.id.listView1);
list.setAdapter(adapter);


}


lớp công khai MyListAdapter mở rộng ArrayAdapter {
công khai MyListAdapter() {
super(getActivity(), R.layout.item_view, myhomeworkdue);
}

@Ghi đè
Chế độ xem công khai getView(int location, View ConvertView, ViewGroup parent) {
Người giữ ViewHolder;

if(convertView==null){
ConvertView = getActivity().getLayoutInflater().inflate(R.layout.item_view, parent, false);
chủ = ViewHolder mới();

chủ.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);


}

khác {
chủ sở hữu = (ViewHolder) ConvertView.getTag();
}

bài tập về nhà do hiện tạibài tập về nhà = myhomeworkdue.get(position);

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


chủ.HomeworkDueText.setText(currenthomeworkdue.getHomeworkdue());


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


chủ.TeacherText.setText(currenthomeworkdue.getTeacher());

trả về ConvertView;

}

}


}

Đây là mã cho Hoạt động bắt đầu khi nhấp vào mục ListView

    import android.app.Activity;
nhập android.content.Intent;
nhập android.os.Bundle;
nhập android.view.Menu;
nhập android.widget.TextView;
nhập tĩnh com.bernard.beaconportal.Due_Today_Fragment.KEY_HOMEWORK;
nhập tĩnh com.bernard.beaconportal.Due_Today_Fragment.KEY_DESC;


bài tập về nhà của lớp công khaiDetailsActivity mở rộng Hoạt động {

@Ghi đè
khoảng trống được bảo vệ trênCreate(Gói đã lưuInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);

Bài tập về chuỗi = "";
Chuỗi desc = "";

Ý định ý định = getIntent();
if (null != ý định) {
bài tập về nhà = Intent.getStringExtra(KEY_HOMEWORK);
desc = Intent.getStringExtra(KEY_DESC);
}

Tiêu đề TextViewTxt = (TextView) findViewById(R.id.texthomeworkdue);
headTxt.setText(bài tập về nhà);

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

}


}

Đây là mã cho đoạn thẻ

nhập java.lang.reflect.Field;
nhập com.actionbarsherlock.app.SherlockFragment;
nhập com.astuetz.PagerSlidingTabStrip;

nhập android.os.Bundle;
nhập android.support.v4.app.Fragment;
nhập android.support.v4.view.ViewPager;
nhập android.view.LayoutInflater;
nhập android.view.View;
nhập android.view.ViewGroup;

lớp công khai Fragments2 mở rộng SherlockFragment {

@Ghi đè
Chế độ xem công khai trênCreateView(LayoutInflater inflater, ViewGroup container,
Gói đã lưuInstanceState) {
Xem view = inflater.inflate(R.layout.viewpager_main, container, false);
// Xác định ViewPager trong viewpager_main.xml
Máy nhắn tin ViewPager = (ViewPager) view.findViewById(R.id.viewPager);
// Đặt ViewPagerAdapter thành ViewPager
pager.setAdapter(ViewPagerAdapter mới(getChildFragmentManager()));
Các tab PagerSlidingTabStrip = (PagerSlidingTabStrip) view.findViewById(R.id.pagerTabStrip);
tab.setViewPager(máy nhắn tin);

quay lại xem;
}

@Ghi đè
khoảng trống công khai trênDetach() {
super.onDetach();
thử {
Trường childFragmentManager = Fragment.class
.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} bắt (NoSuchFieldException e) {
ném RuntimeException mới (e);
} bắt (IllegalAccessException e) {
ném RuntimeException mới (e);
}
}
}

Đây là nơi chuỗi được xác định cho công việc phù hợp

bài tập về nhà của lớp công khai {
bài tập về chuỗi riêng tư;
mô tả chuỗi riêng tư;
int riêng tư IconID;
giáo viên đàn dây riêng;



bài tập về nhà công khai(Bài tập về chuỗi, Chuỗi desc, int IconID, Giáo viên chuỗi) {



super();
this.homework = bài tập về nhà;
this.desc = desc;
this.IconID = IconID;
this.teacher = giáo viên;
}

Chuỗi công khai getHomeworkdue() {
trả lại bài tập về nhà;
}
Chuỗi công khai getDesciption() {
trả về mô tả;
}
công khai int getIconID() {
returnIconID;
}
Chuỗi công khai getTeacher() {
giáo viên trở về;
}


}

Đây là mã cho đoạn chứa trong năm tab

nhập java.util.ArrayList;
nhập java.util.List;

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


lớp công khai thứ năm mở rộng Fragment {



Chế độ xem công khai trênCreateView(Trình tăng LayoutInflater, vùng chứa ViewGroup, Gói đã lưuInstanceState){
trả về inflater.inflate(R.layout.schedule_list_view, container, false });

Danh sách riêng myschedule = new ArrayList();



lớp tĩnh ViewHolder {

TextView công khai Bài tập về nhàDueText;
}

khoảng trống công khai trênStart() {
super.onStart();

điền lịchList();
cưListView();

}


khoảng trống riêng tư populatesscheduleList() {
myschedule.add(lịch trình mới ("E Band"));
myschedule.add(lịch trình mới ("G Band"));
myschedule.add(lịch trình mới("F Band"));
myschedule.add(lịch trình mới("H Band"));
myschedule.add(lịch trình mới("A Band"));
myschedule.add(lịch trình mới("C Band"));
myschedule.add(lịch trình mới ("D Band"));
}

khoảng trống riêng tư populateListView() {
ArrayAdapter adapter = new MyListAdapter();
Danh sách ListView = (ListView)getView().findViewById(R.id.listView2);
list.setAdapter(adapter);

}


lớp công khai MyListAdapter mở rộng ArrayAdapter {
công khai MyListAdapter() {
super(getActivity(), R.layout.item_view, myschedule);
}

@Ghi đè
Chế độ xem công khai getView(int location, View ConvertView, ViewGroup parent) {
Người giữ ViewHolder;

if(convertView==null){
ConvertView = getActivity().getLayoutInflater().inflate(R.layout.schedule_list_item, parent, false);
chủ = ViewHolder mới();

Holder.HomeworkDueText = (TextView) ConvertView.findViewById(R.id.bandText);

ConvertView.setTag(holder);
}

khác {
chủ sở hữu = (ViewHolder) ConvertView.getTag();
}

lịch trình bài tập về nhà hiện tại = myschedule.get(position);

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

trả về ConvertView;


}

}

}

Đây là nơi chuỗi được xác định cho lịch trình

lịch học công khai {
ban nhạc dây riêng;




lịch trình công cộng(Dải đàn dây) {



super();
this.band = ban nhạc;

}

Dải chuỗi công khai() {
ban nhạc trở lại;


}

}

Nếu bạn cần thêm thông tin xin vui lòng hỏi trước và cảm ơn sự giúp đỡ của bạn

Tôi đã cố gắng khắc phục lỗi này trong hai ngày và tôi đã kiệt sức.

câu trả lời hay nhất

Lý do chúng ta khai báo danh sách mới khi tạo một phân đoạn là vì khi bạn quay lại phân đoạn của mình, nó không khai báo danh sách mới mà sử dụng danh sách cũ. Vì vậy, để giải quyết vấn đề này, bạn cần chia đoạn mã sau thành hai phần:

Danh sách riêng myhomeworkdue = new ArrayList();

nhập cảnh một phần trênTiếp tục Trong đoạn của bạn, bạn cũng cần xóa trênBắt đầutrênBắt đầu đến trênTiếp tục Mọi thứ đều ở dạng .Nhưng trước tiên hãy giữ câu lệnh này:

Danh sách riêng myhomeworkdue;

và di chuyển phần còn lại đếntrênTiếp tục.

@Ghi đè
khoảng trống được bảo vệ trênResume() {
// TODO sơ khai phương thức được tạo tự động
super.onResume();
myhomeworkdue = new ArrayList();
điền bài tập về nhàdueList();
cưListView();
registerClickCallback();
}

thứ hai của bạn ListView Vấn đề tương tự tồn tại ở , bởi vì chúng giống nhau.

Hy vọng điều này hữu ích cho bạn. Nếu nó hoạt động, xin vui lòng cho tôi phản hồi.

Giới thiệu về Android: Khi tôi bắt đầu một Hoạt động mới và nhấn quay lại, Chế độ xem danh sách sẽ tự sao chép, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21446361/

27 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress