如何在同一行的listview中获取两个textview?

时间:2014-08-18 10:30:09

标签: android android-layout listview

我有两个TextViews tvA和tvB出现在ListView lvA中。 tvA和tvB使用Cursor显示从Sqlite数据库中提取的数据。

Cursor cursor = myDb.getAllRows();

    String[] from = new String[]
                    {DBAdapter.KEY_A,DBAdapter.KEY_B};
            int[] to = new int[]
                    {R.id.tvA,R.id.tvB};

    SimpleCursorAdapter myCursorAdapter =new SimpleCursorAdapter(this,R.layout.lvA, cursor,from,to);
 myList = (ListView) findViewById(R.id.lvA);
        myList.setAdapter(myCursorAdapter);
        registerForContextMenu(myList);

问题是tvA和tvB并不是lvA中的一个项目(即它们不会出现在同一行),而是显示为两个不同的项目。

以下是XML:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="5dip"
    >

    <TextView
        android:id="@+id/tvA"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"/>


    <TextView
        android:id="@+id/tvB"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:layout_toRightOf="@id/tvA"/>

</RelativeLayout>

4 个答案:

答案 0 :(得分:0)

如果您希望两个TextView在同一对齐中,则可以将LinearLayout与android:layout_weight属性一起使用。

要具有相等宽度的TextView,请给出相同的权重值。

答案 1 :(得分:0)

尝试这个:

主Java:

  //DECLARE:

  private Map<String, Map<String, String>> mMenuView = new HashMap<String, Map<String, String>>();

// IN onCreateView

        Adapter mAdapter = new NewAdapter(getActivity().getApplicationContext(), mMenuView);
        mListView.setAdapter(mAdapter);

//添加onActivityCreated或onStart从数据库保存数据并存储在mMenuView中

      Map<String, String> tempMap = new HashMap<String, String>();
      tempMap.put("TEXTVALE_A", datafromdb_A);
      tempMap.put("TEXTVALE_B", datafromdb_B);

      mMenuView.put(Integer.toString(mMenuView.size()), tempMap);

      }

// NEWADAPTER

私有类NewAdapter扩展了BaseAdapter {

    private Context mContext;
    private TextView mTitle1;
    private TextView mTitle2;

    private Map<String, Map<String, String>> mData = new HashMap<String, Map<String, String>>();


    public NewAdapter(Context applicationContext,Map<String, Map<String, String>> mMenuValue) {


        mContext = applicationContext;
        mData =  mMenuValue;

    }

    @Override
    public int getCount() {
        return mData.size();

    }

    @Override
    public Map<String, String> getItem(int position) {
        return mData.get(Integer.toString(position));
    }


    @Override
    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        final Map<String, String> data = mData.get(Integer.toString(position));
        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.linear_layout, null);

            mTitle1 = (TextView) convertView.findViewById(R.id.t1A);
            mTitle2 = (TextView) convertView.findViewById(R.id.t1B);

        }

        if (data != null) {

            mTitle1.setText(data.get("TEXTVALE_A"));
            mTitle2.setText(data.get("TEXTVALE_B"));
        }
        return convertView;

   }

}

linear_layout.xml

  <LinearLayout
            android:id="@+id/content_menu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:baselineAligned="false">

            <LinearLayout
                android:id="@+id/tab1_wrapper"
                android:layout_width="0dip"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:orientation="vertical"
                android:layout_gravity="center|center_horizontal"
                >

                    <TextView
                        android:id="@+id/t1A"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:textSize="13sp"
                        android:gravity="center|center_horizontal"
                        android:textColor="@color/text_color3x"/>

            </LinearLayout>


            <LinearLayout
                android:id="@+id/tab2_wrapper"
                android:layout_width="0dip"
                android:layout_height="50dp"
                android:layout_weight="0.5"
                android:orientation="vertical"
                android:gravity="left|center_vertical|center_horizontal"
                >


                 <TextView
                        android:id="@+id/A"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:textSize="13sp"
                        android:gravity="center|center_horizontal"
                        />


            </LinearLayout>

          </LinearLayout>

答案 2 :(得分:0)

您可以使用TableLayout

<TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
                    <TableRow
                    android:id="@+id/tableRow1"
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent">            
                    <TextView android:id="@+id/tvA"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" >   
                    </TextView>    
                    <TextView android:id="@+id/tvB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" >
                    </TextView> 
                    </TableRow></TableLayout >
带有android:orientation="horizontal"

或LinearLayout 和带有android:layout_weight="1"

的TextView

答案 3 :(得分:0)

这是我如何使用同一行中的三个项目=这是我从光标填充的项目列表

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"  
   android:id="@+id/RelativeLayout01" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content">
 <TextView
    android:id="@+id/TextView_StudentName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="12sp" 
    android:maxWidth="75dp" 
    android:layout_gravity="left"
    android:text="@string/student_id" 
    android:padding="5dp"></TextView>
<TextView
    android:id="@+id/TextView_StudentLocation"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="12sp" 
    android:maxWidth="75dp" 
    android:gravity="center"
    android:text="@string/student_Location" 
    android:padding="5dp"></TextView>
<TextView
    android:id="@+id/TextView_StudentClass"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="12sp" 
    android:maxWidth="75dp" 
    android:layout_alignParentRight="true"
    android:text="@string/student_class" >
 </TextView>
</RelativeLayout>`

我正在使用dimen文件中的信息替换硬件大小,但到目前为止这已经奏效。