我正在开发一个从数据库中获取数据并通过Listview显示它们的应用程序。所以我使用了一个带有Loader的简单光标适配器。 现在我需要在主标题下插入TextViews。所以我试着将它插入一个线性布局中,并以此编程创建TextViews,因为它们依赖于数据库中数据的数量。
--- Title of the row ---
-- txt1 -- txt2 -- txt3 -- tx.... --
我不知道如何绑定线性布局我创建了这个行布局:
<TextView
android:id="@+id/doc_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/doc_note"
android:layout_alignParentTop="true"
android:layout_alignWithParentIfMissing="true"
android:layout_marginLeft="3dip"
android:layout_toLeftOf="@+id/doc_signed_date"
android:layout_toRightOf="@+id/doc_starred"
android:clickable="false"
android:ellipsize="end"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center_vertical"
android:lines="1"
android:longClickable="false"
android:textAppearance="@style/TextAppearance.BookDocListTitle" />
<!--
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/opaque_black"
-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_marginLeft="3dip"
android:layout_height="20dip"
android:id="@+id/doc_fields"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/doc_tag"
android:orientation="horizontal" >
<TextView android:id="@+id/demo_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"/>
</LinearLayout>
因此,在简单的游标适配器中,我绑定了假的textview,并从getParent获取了对线性布局的访问来执行我的工作..这是绑定中的案例代码:
case R.id.demo_txt:
if(cursor.getInt(LIST_COLUMN_INDEX_CODE) > 0)
listOfFields = sb.queryDocumentClasses(String.valueOf(cursor.getInt(LIST_COLUMN_INDEX_CODE)));
ll = (LinearLayout)view.getParent();
ll.removeAllViews();
if(listOfFields != null){
for(DocumentField d: listOfFields){
if(d.isHighlighted()){
TextView txt = new TextView(getApplicationContext());
txt.setBackgroundDrawable(getResources().getDrawable(R.drawable.shp_round_corners));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.setMargins(3, 0, 0, 0);
txt.setLayoutParams(params);
txt.setTag("field");
txt.setText("text");
ll.addView(txt);
}
}
ll.setVisibility(View.VISIBLE);
return true;
}else{
ll.setVisibility(View.GONE);
}
return false;
它工作得很好,但是当我滚动列表时遇到问题,因为适配器循环视图和TextViews出现在它们没有任何内容之前的行上。
谢谢..