【发布时间】:2013-08-01 23:41:03
【问题描述】:
我正在尝试制作一个让用户存储和保存联系人的应用程序。可以保存,但是列出有问题。
我有一个贯穿数据库的 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);
}
有什么解决办法吗?提前致谢
【问题讨论】: