android - ListView 项目在 android 中重复?

标签 android android-widget

我使用下面的代码列出数组中的一些项目,而滚动 ListView 项目是在数组中追加更多相同的数据退出我不知道我犯了什么错误。

有人指出我哪里出错了。

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;



       }

       }

最佳答案

holder.subCategories.setText(array_spinner_subcategories[position]); 行移动到 else block 下方的 getView() 方法中

关于android - ListView 项目在 android 中重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500325/

相关文章:

java - 从 String 在 DatePickerDialog 中设置日期

android - 什么时候需要在 android 小部件或应用程序中使用 singleTop launchMode?

android - 编辑文本框中提示的自定义位置。

安卓微调器 : Avoid onItemSelected calls during initialization

javascript - Android上的Javascript音频播放已静音

java - 如何在两个 Activity 之间传递类对象?

android - 如何在Eclipse中导入Android App项目源码?

android - 如何知道图库小部件何时停止滚动?

java - 如何检测 android 应用程序的堆大小使用情况

android - 从 Firebase Firestore 检索 recyclerview 中的图像