android – Listview每6次复制一次项目

android – Listview每6次复制一次项目,第1张

概述希望每个人都好; 我知道这个问题已经提前几次审查过,但经过长时间的搜索,我仍然没有找到解决方案. 我的自定义列表视图每6项重复一次项目. 已经检查并尝试过: 1- layout_width和layout_height不包含wrap_content 2- holder = new ListViewItem()在任何内容初始化之前 3-有一个“convertView!= null” 4- holder 希望每个人都好;

我知道这个问题已经提前几次审查过,但经过长时间的搜索,我仍然没有找到解决方案.

我的自定义列表视图每6项重复一次项目.

已经检查并尝试过:

1- layout_wIDth和layout_height不包含wrap_content

2- holder = new ListVIEwItem()在任何内容初始化之前

3-有一个“convertVIEw!= null”

4- holder.linearLayout.getChild()不能在我的情况下使用,因为布局不是linear

5-晴()

如果有人可以帮助我,这是我的代码

CustomListVIEwAdapter.java的getVIEw()

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;@OverrIDepublic 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);    }@OverrIDepublic int getIconResID(int index) {    return 0;}@OverrIDepublic 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;}@OverrIDepublic int getCount() {    // Todo auto-generated method stub    return 4;}@OverrIDepublic 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,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;    } }

提前致谢,
问候,
克里斯

解决方法 我现在看到了问题.不,这里没有重复.执行以下几项更改:

在静态类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.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);
总结

以上是内存溢出为你收集整理的android – Listview每6次复制一次项目全部内容,希望文章能够帮你解决android – Listview每6次复制一次项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存