簡體   English   中英

Android-Listview中的多個textview

[英]Android - Multiple textviews in Listview

我正在使用textview(list_row.xml)填充Listview(list.xml)。

我需要在list_row.xml中添加一個額外的textview,這意味着我需要將它們包裝在一個布局中。 但是,當我這樣做時,我收到Textview ID錯誤。

list_row.xml我需要:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView android:id="@+id/nameTV"
android:textSize="14sp"
android:textStyle="bold"
android:textColor="#FFFF00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>

main.xml中

public View GetView(int inPosition, View inConvertView, ViewGroup inParent) 
{
    View _row = inConvertView;

    if (_row == null) 
    {
        // Inflate Row
        Log.d(TAG, "Starting XML Row Inflation ... ");
        LayoutInflater inflater = (LayoutInflater) 
                cContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        _row = inflater.inflate(R.layout.list_row, inParent, false);
        Log.d(TAG, "Successfully completed XML Row Inflation!");
    }

    // Get item
    PropertiesAd _adProperty = GetItem(inPosition);

    // Get reference to TextView - country_name
    cAdName = (TextView) _row.findViewById(R.id.nameTV);

    //Set name
    cAdName.setText(_adProperty.toString());

    return _row;
}

為了測試,我還沒有添加第二個textview。 我只是想讓它與布局包裝器一起工作。

沒有LinearLayout,一切正常。 但同樣,我需要它添加第二個textview。 建議?

謝謝

ArrayAdapter:

public class ArrayAdapterAd extends ArrayAdapter<PropertiesAd> 
{

private static final String TAG = "AdArrayAdapter";
private Context cContext;
private TextView cAdName;
private List<PropertiesAd> cAdList = new ArrayList<PropertiesAd>();

public ArrayAdapterAd(Context inContext, int inTextViewResourceId, List<PropertiesAd> inObjects) 
{
    super(inContext, inTextViewResourceId, inObjects);

    this.cContext = inContext; 
    this.cAdList = inObjects;
}


public int GetCount() 
{
    return this.cAdList.size();
}


public PropertiesAd GetItem(int inIndex) 
{
    return this.cAdList.get(inIndex);
}


public View GetView(int inPosition, View inConvertView, ViewGroup inParent) 
{
    View _row = inConvertView;

    if (_row == null) 
    {
        // Inflate Row
        Log.d(TAG, "Starting XML Row Inflation ... ");
        LayoutInflater inflater = (LayoutInflater) 
                cContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        _row = inflater.inflate(R.layout.ad_list, inParent, false);
        Log.d(TAG, "Successfully completed XML Row Inflation!");
    }

    // Get item
    PropertiesAd _adProperty = GetItem(inPosition);

    // Get reference to TextView - country_name
    cAdName = (TextView) _row.findViewById(R.id.ad_listTextView);

    //Set country name
    cAdName.setText(_adProperty.toString());

    return _row;
}

}

這是包含2個textviews的listview“list_row”的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="horizontal">

    <TextView android:id="@+id/text1" android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    <TextView android:id="@+id/text2" android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</LinearLayout>

我假設getView()來自ArrayAdapter子類? 如果是這樣,您的構造函數是什么樣的? 也許你傳入一個id引用而不是布局引用? 如果您的整個布局只不過是一個TextView,那么這可能會很好地解決,但是可以解釋為什么將其包裝在布局中時會發生錯誤。

另外,不要忘記實現rowwrapper / viewholder模式以提高性能和回收視圖。 例如, 在這里看看。

順便說一句,您甚至可以使用Android內置布局之一。 android.R.layout.simple_list_item_2定義了兩行列表項布局。 不過,由於這兩個元素的樣式不同,因此它可能無法滿足您的需求。 最后,自定義布局始終是最靈活的。 :)

現在我看到了你的問題......你無法擴展ArrayAdapter類。 相反,擴展BaseAdapter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM