[英]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.