我有以下通知片段。该文件的名称为notification_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/notification_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:gravity="left"
android:text="Lorem Epsum" />
</LinearLayout>
</LinearLayout>
我还有另一个xml文件,它是notification.xml。
我使用以下代码来扩充notification_fragment.xml文件。
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.notification_fragment, container, false);
initView();
return rootView;
}
public void initView(){
notification_desc = (TextView) rootView.findViewById(R.id.notification_desc);
}
}
我需要做的是notfication_desc的值将是动态的,因此应该显示的文本字段的数量将动态增加。所以我想在notification_fragment.xml中设置textviews的值。最后,我想在每次设置notification_desc的值时动态地使用notification.xml来扩充这个xml。我怎样才能做到这一点?或者我只能在onCreateView方法中创建子视图?
更新
我从sqlite db中检索值并尝试动态显示值。
这是我检索值的方法,
List<PendingOrdersDao> contacts = db.getAllPendingOrders();
for (PendingOrdersDao cn : contacts) {
initView(cn.getProformoInvoiceNumber(), cn.getProformoInvoiceDate());
}
当我调用initView方法时,它应该根据db中存在的条目数动态地向布局添加视图。以下是我的initView方法。
private void initView(String proformaInvoice, String invoiceDate){
LinearLayout mLinearLayoutContainer = (LinearLayout) mRootView.findViewById(R.id.dashboard_container);
LayoutInflater inflater = getActivity().getLayoutInflater();
View v = inflater.inflate(R.layout.dashboard_fragment, mLinearLayoutContainer, false);
mProformaInvoice = (TextView) v.findViewById(R.id.dashProformaInvoiceNo);
mInvoiceNumber = (TextView) v.findViewById(R.id.dashInvoiceNo);
mProformaInvoice.setText(proformaInvoice);
mInvoiceNumber.setText(invoiceNumber);
mLinearLayoutContainer.addView(v);
}
问题是,数据库中有三个条目因此应显示3个视图,但它只显示一个视图
答案 0 :(得分:1)
我可以看到您想要将子视图动态添加到LinearLayout。您只需要ViewGroup,任何ViewGroup,(LinearLayout,RelativeLayout,FrameLayout,...)并使用addView方法向其中添加子项。
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.notification_fragment, container, false);
initView();
return rootView;
}
public void initView(){
mLinearLayoutContainer = (LinearLayout) rootView.findViewById(R.id.linearlayout_id);
LayoutInflater inflater = getActivity().getLayoutInflater();
// The below code can be inside a loop or whatever you want
View v = inflater.inflate(R.layout.notification, mLinearLayoutContainer, false);
mLinearLayoutContainer.addView(v);
}
答案 1 :(得分:0)
我对Android开发很新,所以这可能或者可能都不正确。
你不能在你的Activity的OnVisible()调用期间在TextView上调用.setText(“你想要的任何东西”)或者那些东西吗?
TextView notificationDescription = (TextView) findViewById(R.id.notification_desc);
notificationDescription.setText("Put yo text here!");
答案 2 :(得分:0)
据我所知,您希望动态地将textview添加到您的布局中。为此,请将xml文件的Linearlayout视为父布局,您必须在其中动态添加textView。并使用以下代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:id="@+id/root_ll"
android:orientation="vertical" >
</LinearLayout>
LinearLayout rootLayout = (LinearLayout) findViewById(R.id.root_ll);
private void createDynamicLayout() {
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
TextView fieldLabel = new TextView(mContext);
fieldLabel.setTextSize(TypedValue.COMPLEX_UNIT_SP, textViewSize);
fieldLabel.setTextColor(getResources().getColor(R.color.activity_tv_text_color));
fieldLabel.setText("your text");
fieldLabel.setLayoutParams(params1);
rootLayout.addView(fieldLabel);
}