【发布时间】: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