如何在Simple游标适配器中绑定LinearLayout

时间:2014-09-19 16:10:12

标签: android android-layout android-listview simplecursoradapter

我正在开发一个从数据库中获取数据并通过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出现在它们没有任何内容之前的行上。

谢谢..

0 个答案:

没有答案