【问题标题】:Custom List Adapter return only 11 items自定义列表适配器仅返回 11 项
【发布时间】:2014-09-07 00:45:11
【问题描述】:

我有显示目录中所有图像的 ListView。我有自定义适配器,它显示所有列表项,但图像视图是错误的——前 11 个图像正确显示,其他图像将像前 11 个图像一样以相同的顺序显示。据我了解,问题出在适配器中的 data[position] 上,因为 data 数组是正确的,而 getView 中的 data[position] 仅显示 11 个项目。

这是我的 onCreate:

    public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.list);

                String path = Environment.getExternalStorageDirectory().toString()+"/MANUAL/workflow";
                Log.d("Files", "Path: " + path);
                File f = new File(path);
                File file[] = f.listFiles();
                Log.d("Files", "Size: "+ file.length);

                for (int i=0; i < file.length; i++) {
                        array.add(file[i].getName());
                }

                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    Log.d("Files", "ARRAY ARRAY: "+ array);
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");

                    String[] place = array.toArray(new String[array.size()]);
                    Arrays.sort(place);
                    actions.Settings("sequence.txt", place);

                    listview = (ListView) findViewById(R.id.listview);
                    listview.setAdapter(new yourAdapter(this, place));
                    getIntent().setAction("Already created");

                    DisplayMetrics dm = new DisplayMetrics();
                    getWindowManager().getDefaultDisplay().getMetrics(dm);
                    width = dm.widthPixels;
                    height = dm.heightPixels;

                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    for (int i=0; i<place.length; i++){
                        Log.d("Files", "ARRAY PLACE: "+ place[i]);
                    }
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");
                    Log.d("Files", "###############################################");

                }

还有我的自定义适配器:

class yourAdapter extends BaseAdapter {

    public Matrix matrix() {
            Matrix matrix = new Matrix();
            matrix.postScale(1f, 1f);
            return matrix;
        }


        //ADAPTER
        Context context;
        String[] data;
        private static LayoutInflater inflater = null;

        public yourAdapter(Context context, String[] data) {
            // TODO Auto-generated constructor stub
            this.context = context;
            this.data = data;
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            Log.d("Files", "###############################################");
            Log.d("Files", "###############################################");
            Log.d("Files", "###############################################");
            for (int i=0; i<data.length; i++){
                Log.d("Files", "ARRAY DATA: "+ data[i]);
            }
            Log.d("Files", "###############################################");
            Log.d("Files", "###############################################");
            Log.d("Files", "###############################################");
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return data[position];
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            // TODO Auto-generated method stub
            View vi = convertView;
            //if (vi == null) {
                vi = inflater.inflate(R.layout.row, null);
                TextView text = (TextView) vi.findViewById(R.id.text);
                text.setText(data[position]);


                Log.d("Files", "###############################################");
                Log.d("Files", "ARRAY DATA POSITION: "+ data[position]);
                Log.d("Files", "###############################################");


                Button btnDraw = (Button) vi.findViewById(R.id.buttonDraw);
                btnDraw.setText("draw");
                btnDraw.setContentDescription(data[position]);

                Button btnEdit = (Button) vi.findViewById(R.id.buttonEdit);
                btnEdit.setText("edit");
                btnEdit.setContentDescription(data[position]);  

                Button btnDel = (Button) vi.findViewById(R.id.buttonDel);
                btnDel.setText("delete");
                btnDel.setContentDescription(data[position]);   

                //Log.d("Files", "DATA: " + data[position]);
                try{
                    ImageView mImg = (ImageView) vi.findViewById(R.id.imageView);
                    BitmapTask btmt = new BitmapTask();
                    btmt.setImageView(mImg);
                    btmt.execute(data[position]);
                    //mImg.setImageBitmap(btmt.get());
                } catch (Exception e){
                    e.printStackTrace();
                }

            //}
            return vi;
        }

在我的日志中我有这个:

07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY ARRAY: [img1405508897.png, img1405508900.png, img1405508904.png, img1405508908.png, img1405508911.png, img1405508912.png, img1405508914.png, img1405508916.png, img1405508918.png, img1405508942.png, img1405508958.png, img1405508961.png, img1405508963.png, img1405508972.png, img1405508977.png, img1405508981.png, img1405508986.png, img1405509047.png, img1405509084.png, img1405509096.png, img1405509099.png, img1405509103.png, img1405509108.png, img1405509113.png, img1405509122.png, img1405509128.png, img1405509152.png, img1405509156.png, img1405509168.png, img1405509203.png]
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:03:29.956  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################

和其他日志中的相同数据,但在 DATA POSITION 我只有 11 项:

07-16 17:05:31.612  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.612  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508897.png
07-16 17:05:31.612  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.617  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.617  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508900.png
07-16 17:05:31.617  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.627  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.627  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508904.png
07-16 17:05:31.627  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.642    3056-3333/? D/lights﹕ button : 0 -
07-16 17:05:31.647  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.647  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508908.png
07-16 17:05:31.647  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.652  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.652  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508911.png
07-16 17:05:31.652  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.667  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.667  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508912.png
07-16 17:05:31.667  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.672  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.672  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508914.png
07-16 17:05:31.672  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.677  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.677  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508916.png
07-16 17:05:31.677  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.682  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.682  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508918.png
07-16 17:05:31.682  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.692  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.692  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508942.png
07-16 17:05:31.692  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.697  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################
07-16 17:05:31.697  26363-26363/com.mycompany.overtest D/Files﹕ ARRAY DATA: img1405508958.png
07-16 17:05:31.697  26363-26363/com.mycompany.overtest D/Files﹕ ###############################################

有人可以提出建议吗?

【问题讨论】:

  • 我的所有列表项都在我的视图中,问题是并非所有缩略图都无法正确显示
  • 我有点困惑:您向我们展示的代码无法生成您的第二个日志堆栈。实际上,如果我们查看您的代码,以“ARRAY DATA”开头的行应该被 3 个“######################”行包围。那么,你能告诉我“ARRAY DATA”是yourAdapter类的构造函数中的日志,还是“ARRAY DATA POSITION”日志?
  • 它在for循环下面的getView方法中产生
  • 您尝试滚动您的 ListView 吗?

标签: android arrays listview adapter android-arrayadapter


【解决方案1】:

使用-

 String[] place = array.toArray();

【讨论】:

  • 什么意思?我有它在我的 onCreate - String[] place = array.toArray(new String[array.size()]);
  • 是的,改变它,你传递给适配器的数组只包含 11 项。
  • 我需要将 String[] 传递给 () - 我该怎么做?
  • 数组的数据类型是什么?我认为这是一个数组列表。
  • 是 ArrayList 数组
猜你喜欢
  • 1970-01-01
  • 2020-04-05
  • 2015-04-27
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2012-02-21
相关资源
最近更新 更多