我是Android上的新手,也是Google指南中的新手:http://developer.android.com/training/basics/data-storage/databases.html。
是的,关于dabatase,但是为了实践,在我的虚拟学习应用程序中,我创建了一个简单的存储系统" profile"有东西存放在数据库中。基本上,我已经创建了一个Activity来填充一些文本字段并将其存储在数据库中。还有一个名为ProfileDao的类可以完成CRUD的工作。
我已经达到了一个点,我想使用LinearLayout构建一个活动来显示添加的所有配置文件。问题是我不能像XML一样在代码中堆叠视图。
这是一些代码: ProfileFragment类:
public final class ProfileFragment extends Fragment {
private String _name;
private String _gender;
private int _age;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View retVal = inflater.inflate(R.layout.profile_fragment, container, false);
final TextView _nameField = (TextView) retVal.findViewById(R.id.profile_fragment_name);
final TextView _genderField = (TextView) retVal.findViewById(R.id.profile_fragment_gender);
final TextView _ageField = (TextView) retVal.findViewById(R.id.profile_fragment_age);
_nameField.setText(_name);
_genderField.setText(_gender);
_ageField.setText(String.valueOf(_age));
return retVal;
}
public void setName(String name) { _name = name; }
public void setGender(String gender) { _gender = gender;}
public void setAge(int age) { _age = age; }
public String getName() { return _name; }
public String getGender() { return _gender; }
public int getAge() { return _age; }
}
我最初的意图是使用这个片段将其置于LinearLayout中,但我很快就看到我无法做到这一点,并使这个类只是一个用于返回视图的工具。
SeeProfilesActivity:
public class SeeProfilesActivity extends Activity {
private static final String TAG = makeLogTag(SeeProfilesActivity.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.see_profiles_activity);
final ProfileDao profDao = new ProfileDao(new ProfileDbHelper(this));
final List<Profile> profiles = profDao.getProfiles();
LOGD(TAG, "PROFILES RETRIEVED");
if(profiles.size() == 0) {
final TextView thereisNotProfiles = new TextView(this);
thereisNotProfiles.setText(getString(R.string.there_is_not_profiles));
thereisNotProfiles.setTextSize(35);
LOGD(TAG, "NO PROFILES, SO JUST DISPLAY THERE IS NOT");
setContentView(thereisNotProfiles);
return;
}
addFragmentProfiles(profiles);
}
private void addFragmentProfiles(List<Profile> profiles) {
final LinearLayout itLayout = (LinearLayout) ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
itLayout.setOrientation(LinearLayout.VERTICAL);
View currView;
for(Profile prof : profiles) {
final ProfileFragment profFrag = new ProfileFragment();
profFrag.setName(prof.getName());
profFrag.setGender(prof.getGender());
profFrag.setAge(prof.getAge());
LOGD(TAG, "WELL, ONE PROFILE WAS RETRIEVED");
currView = profFrag.onCreateView(getLayoutInflater(), itLayout, null);
itLayout.addView(currView);//here is my problem
LOGD(TAG, "SUCCESS IN DISPLAY");
}
}
}
如何重现在代码中堆叠LinearLayout XML中存在的视图的行为?
在提出异议之前:
答案 0 :(得分:0)
更改片段布局“profile_fragment”高度为wrap_content,不填充或匹配父级。 我的英语不太好,我希望你能理解......
R.Layout.profile_fragment:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" // This is your problem.
android:orientation="vertical" >