Intereting Posts
Активность NavigationDrawer загромождена обратными вызовами фрагмента и бизнес-логикой приложения Источник не найден Android? Изменение образа ImageView программным способом Время обработки OpenCV Mat Действительно ли необходимо создавать таблицы SQLite при каждом запуске приложения? 16 секунд до тех пор, пока не будет обнаружен запрос Bluetooth-разъединения Как создать предварительный просмотр камеры с использованием API 21 android? Как применить ограничение на приложение для магазина игр для android lollipop Как добавить витамо зависимое в андроид-студию Обрабатывать пустой отклик с помощью модификации и rxjava 2.x RuntimeException в Gson parsing JSON: Не удалось вызвать защищенный java.lang.ClassLoader () без аргументов Создать BigInt со строкой, закодированной до основания 16 Квадратная компоновка GridLayoutManager для RecyclerView Как я могу получить фрагмент из представления? Видео с Android HoneyComb не отображается

Listview дублирует элемент каждые 6 раз

Надеюсь, все хорошо;

Я знаю, что эта проблема была рассмотрена ранее пару раз, но после долгого поиска я до сих пор не нашел решения.

Мое пользовательское listview дублирует элементы каждые 6 элементов.

Уже проверили и попробовали:

1- layout_width и layout_height не содержат wrap_content

2- holder = новый ListViewItem () перед любой инициализацией содержимого

3- Существует «convertView! = Null»

4- holder.linearLayout.getChild () не может использоваться в моем случае, потому что макет не является линейным

5- clear ()

Если кто-нибудь может мне помочь, это мои коды

GetView () CustomListViewAdapter.java

public View getView(final int position, View convertView, ViewGroup parent) { ListViewItem item = items.get(position); ListViewItem holder; View vi=convertView; inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(vi==null){ vi = inflater.inflate(R.layout.item, null); holder = new ListViewItem(); holder.cb = (CheckBox) vi.findViewById(R.id.Item1); holder.sp = (Spinner) vi.findViewById(R.id.Item2); holder.title = (TextView) vi.findViewById(R.id.Item3); holder.pricetitle= (TextView) vi.findViewById(R.id.item4); holder.Descriptiontitle= (TextView) vi.findViewById(R.id.Item5); vi.setTag(holder); }else{ holder = (ListViewItem) vi.getTag(); } holder.title.setText(item.ItemTitle); holder.pricetitle.setText(item.price+""); holder.Descriptiontitle.setText(item.Description); return vi; } 

Класс ListViewItem

 static class ListViewItem{ public String ItemTitle; public int price; public String Description; public TextView title; public TextView pricetitle; public TextView Descriptiontitle; public CheckBox cb; public Spinner sp; } 

Основная деятельность

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View v = inflater.inflate(R.layout.starterbottom, null); ListView myList = (ListView)v.findViewById(R.id.MyListStarter); List<ListViewItem> items = new ArrayList<ListViewItem>(); for(int i=0;i<10;i++){ items.add(new ListViewItem(){{ ItemTitle = "Starter Title"; Description= "Your description goes here"; price=0; }}); } CustomListViewAdapter listadapter = new CustomListViewAdapter(getActivity(), android.R.layout.simple_list_item_1, items); myList.setAdapter(listadapter); return v; } 

РЕДАКТИРОВАТЬ

MainmenuActivity.java

 public class MainmenuActivity extends SlidingActivity{ Button buttononside; TextView title; FragmentAdapter mAdapter; ViewPager mPager; PageIndicator mIndicator; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mainmenu); setBehindContentView(R.layout.sidemenu); mAdapter = new FragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setOffscreenPageLimit(4); mIndicator = (PageIndicator)findViewById(R.id.indicator); mIndicator.setViewPager(mPager); getSlidingMenu().setBehindOffset(200); getSlidingMenu().setMode(SlidingMenu.RIGHT); getSlidingMenu().setFadeDegree(0.35f); title = (TextView) findViewById(R.id.Title); title.setText("Starters"); } public boolean onCreateOptionsMenu(android.view.Menu menu) { getMenuInflater().inflate(R.menu.mainmenu, menu); return true; } public void onClick(View v) { getSlidingMenu().toggle(); } public void changecolor(View v){ buttononside = (Button) findViewById(v.getId()); buttononside.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction()==MotionEvent.ACTION_DOWN) buttononside.setBackgroundColor(Color.BLACK); else buttononside.setBackgroundResource(R.drawable.buttonshape); return true; } }); } static class ListViewItem{ public String ItemTitle; public int price; public String Description; public TextView title; public TextView pricetitle; public TextView Descriptiontitle; public CheckBox cb; public Spinner sp; } } 

FragmentAdapter.java

 public class FragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter{ public FragmentAdapter(FragmentManager fm) { super(fm); } @Override public int getIconResId(int index) { return 0; } @Override public Fragment getItem(int position) { android.support.v4.app.Fragment fragment = new StarterActivity(); switch(position){ case 0: fragment = new MainActivity(); break; case 1: fragment = new SecondActivity(); break; case 2: fragment = new ThirdActivity(); break; case 3: fragment = new FourthActivity(); break; } return fragment; } @Override public int getCount() { // TODO Auto-generated method stub return 4; } @Override public CharSequence getPageTitle(int position){ String title = ""; switch(position){ case 0: title = "First"; break; case 1: title = "Second"; break; case 2: title = "Third"; break; case 3: title = "Fourth"; break; } return title; } } 

MainActivity.java

 public class MainActivity extends Fragment { int i=0; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View v = inflater.inflate(R.layout.starterbottom, null); ListView myList = (ListView)v.findViewById(R.id.MyListStarter); List<ListViewItem> items = new ArrayList<ListViewItem>(); for(i=0;i<10;i++){ items.add(new ListViewItem(){{ ItemTitle = "Title "+i; Description= i+" Your Own description"; price= i; }}); } CustomListViewAdapter listadapter = new CustomListViewAdapter(getActivity(), R.layout.item, items); myList.setAdapter(listadapter); return v; } } 

Спасибо заранее, С уважением, Крис

Solutions Collecting From Web of "Listview дублирует элемент каждые 6 раз"

Я вижу проблему сейчас. И нет, здесь нет дублирования. Выполните следующие изменения:

В вашем статическом классе ListViewItem добавьте boolean isChecked;

 static class ListViewItem{ public String ItemTitle; public int price; public String Description; public TextView title; public TextView pricetitle; public TextView Descriptiontitle; public CheckBox cb; public Spinner sp; public boolean isChecked; // <--- added } 

Измените инициализацию items :

 items.add(new ListViewItem(){{ ItemTitle = "Starter Title"; Description= "Your description goes here"; price=i; isChecked = false; }}); 

В методе getView () после holder.Descriptiontitle.setText(item.Description); , Добавить:

 holder.cb.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { item.isChecked = true; } else { item.isChecked = false; } } }); if (item.isChecked) { holder.cb.setChecked(true); } else { holder.cb.setChecked(false); } 

Добавьте ключевое слово final в ListViewItem item = items.get(position); :

 final ListViewItem item = items.get(position);