我正在尝试制作一个让用户存储和保存联系人的应用程序。它可以保存,但它有列出的问题。
我有一个贯穿数据库的 for 循环,并为每个联系人(每一行)、一个图像(实际上它是一个字符串,因为它通过路径)和一个字符串打印一组数据。它在滚动视图中打印它们,每个联系人都有一个线性布局(每个联系人都有自己的线性布局,这样我就可以让一个联系人每个占据一行)。图像出来了,但是,文本视图无处可寻。
使用 log.d(textview.getText()); 它确认文本视图已创建并占用空间。 http://chesnutcase.heliohost.org/derpbox/itv1.png 两个带有名字的“联系人”,没有打印出来。中间的空间大概是由文本视图。 http://chesnutcase.heliohost.org/derpbox/itv2.png 另外两个“联系人”,但没有名字。彼此之间没有空间。或者至少,空间要小得多。代码:
DatabaseHandler db = new DatabaseHandler(this);
int a = (int) (long) db.countRows();
LinearLayout theLayout = (LinearLayout)findViewById(R.id.contactsList);
for(int i = 0;i<a;i++){
ImageButton image = new ImageButton(this);
int density=getResources().getDisplayMetrics().densityDpi;
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(density,density, 0.5f);
image.setLayoutParams(vp);
image.setScaleType(ImageView.ScaleType.FIT_END);
int b = a - i;
try {
image.setImageBitmap(decodeUri(Uri.parse(db.getContactData("photo_path")[i])));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
theLayout.addView(image);
TextView tv = new TextView(this);
tv.setText(db.getContactData("name")[i]);
Log.d("UserLog","name is " + db.getContactData("name")[i]);
Log.d("UserLog","textfield contains " + tv.getText());
LinearLayout.LayoutParams vp2 = new LinearLayout.LayoutParams(0,0,1f);
tv.setLayoutParams(vp2);
tv.setBackgroundColor(Color.RED);
theLayout.addView(tv);
}
有什么解决办法吗?提前致谢