列表视图项重复的Andr​​oid? [英] list view item repeated in android?

查看:89
本文介绍了列表视图项重复的Andr​​oid?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用下面的code,列出从阵列几个项目,同时滚动列表视图中的项目是在阵列我不`吨知道我犯了什么样的错误相同的数据退出追加更多。

任何人都指出,在那里我所犯的错误。

 私有静态字符串array_spinner_subcategories [];
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        的setContentView(R.layout.sub_categories);

        setSubCat();

        ListView控件 - 资料下载=(ListView控件)findViewById(R.id.sub_catlist);
        sub_categories.setAdapter(新EfficientAdapter(本));

        sub_categories.setAdapter(适配器);
        sub_categories.setOnItemClickListener(subcatlistener);

        CR = getContentResolver();
    }
    公众的String [] setSubCat(){
        recordDB =新Viddatabase(本​​);
        DB = recordDB.getWritableDatabase();
        array_spinner_subcategories = recordDB.subcategoriesList(DB);
        recordDB.close();
        返回array_spinner_subcategories;
}
    私人OnItemClickListener subcatlistener =新OnItemClickListener(){
        公共无效onItemClick(适配器视图父,视图V,INT位置,
   长ID){
              System.gc()的;
              Toast.makeText(SubCategories.this,array_spinner_subcategories [位置]
                        Toast.LENGTH_LONG).show();

        }
   };

   私有静态类EfficientAdapter扩展了BaseAdapter {
       私人LayoutInflater mInflater;

       公共EfficientAdapter(上下文的背景下){
       mInflater = LayoutInflater.from(上下文);

       }

       公众诠释getCount将(){
       返回array_spinner_subcategories.length;
       }

       公共对象的getItem(INT位置){
       返回的位置;
       }

       众长getItemId(INT位置){
       返回的位置;
       }

       公共查看getView(INT位置,查看convertView,ViewGroup中父){
         System.gc()的;
       ViewHolder持有人;

       如果(convertView == NULL){
       convertView = mInflater.inflate(R.layout.albumlist,NULL);
       持有人=新ViewHolder();

       holder.subCategories =(TextView中)convertView.findViewById(R.id.albumDetails);
       holder.subCategories.setText(array_spinner_subcategories [位置]);


       convertView.setTag(保持器);
       } 其他 {
       支架=(ViewHolder)convertView.getTag();
       }


       返回convertView;
       }

       静态类ViewHolder {

       TextView的子类别;



       }

       }
 

解决方案

移动 holder.subCategories.setText(array_spinner_subcategories [位置]);在 getView()其他块下面的方法

i use the following code to list few items from array , while scrolling the list view items is append more with same data exit in array i don`t know what mistake i made.

Anyone pointed out where i made the mistake.

private static String array_spinner_subcategories[];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); 
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.sub_categories);

        setSubCat();

        ListView sub_categories=(ListView)findViewById(R.id.sub_catlist);
        sub_categories.setAdapter(new EfficientAdapter(this));

        sub_categories.setAdapter(adapter);
        sub_categories.setOnItemClickListener(subcatlistener);

        cr=getContentResolver();
    }
    public String[] setSubCat(){
        recordDB=new Viddatabase(this);
        db=recordDB.getWritableDatabase();
        array_spinner_subcategories=recordDB.subcategoriesList(db);
        recordDB.close();
        return array_spinner_subcategories;
}
    private OnItemClickListener subcatlistener = new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position,
   long id) {
              System.gc();
              Toast.makeText(SubCategories.this,array_spinner_subcategories[position],
                        Toast.LENGTH_LONG).show();

        }
   };

   private static class EfficientAdapter extends BaseAdapter {
       private LayoutInflater mInflater;

       public EfficientAdapter(Context context) {
       mInflater = LayoutInflater.from(context);

       }

       public int getCount() {
       return array_spinner_subcategories.length;
       }

       public Object getItem(int position) {
       return position;
       }

       public long getItemId(int position) {
       return position;
       }

       public View getView(int position, View convertView, ViewGroup parent) {
         System.gc();
       ViewHolder holder;

       if (convertView == null) {
       convertView = mInflater.inflate(R.layout.albumlist, null);
       holder = new ViewHolder();

       holder.subCategories = (TextView) convertView.findViewById(R.id.albumDetails);
       holder.subCategories.setText(array_spinner_subcategories[position]);


       convertView.setTag(holder);
       } else {
       holder = (ViewHolder) convertView.getTag();
       }


       return convertView;
       }

       static class ViewHolder {

       TextView subCategories;



       }

       }

解决方案

Move the holder.subCategories.setText(array_spinner_subcategories[position]); line in getView() method below the else block

这篇关于列表视图项重复的Andr​​oid?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆