我有一個列表視圖,每行有兩種可能的佈局。查找在列表視圖中點擊哪一行
當爲每行實現我的onClick偵聽器時,我試圖找到找出哪種類型的行被點擊的最有效方法,以便我可以從中獲取數據。
有沒有比這更有效的方法?我想訪問getItemViewType(position)
功能,但我想不出成功從parent
訪問:
// listening to single list item on click
myListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// selected item's TextView
// if the first view is null, it must be the other kind
TextView tView = null;
if(view.getId() == R.list.layout_a) tView = (TextView) view.findViewById(R.list.text_a);
else tView = (TextView) view.findViewById(R.list.text_b);
//DO STUFF AND LAUNCH ACTIVITY
}
});
佈局 - 這是一個過於簡單的例子,但我需要知道,如果被點擊的行使用R.list.text_a
或R.list.text_b
。我可以給根LinearLayout一個android:id=
屬性嗎?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+list/layout_a"
android:layout_width="fill_parent"
android:layout_height="100dip"
<TextView
android:id="@+list/text_a"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+list/layout_b"
android:layout_width="fill_parent"
android:layout_height="100dip"
<TextView
android:id="@+list/text_b"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip" />
</LinearLayout>
我很困惑你的意思是更高效。它的效率就像它會得到大聲笑。你點擊一行,你會得到那些行的東西。通過找出哪種類型的行是什麼意思? – Andy
通過Id查找視圖是一個相對昂貴的調用。我認爲如果你在不同的位置上有不同的文本瀏覽,你可以參考你的數據容器中的位置來查找你有的視圖類型。也許甚至只有一個數組來保存該位置的視圖類型。但是由於您在此之後發起了一項新活動,我認爲這不會經常點擊,因此可能不會感覺到費用。 – mango
@Mango - 上面更新了我的代碼...我可以在上面的LinearLayouts中添加一個'android:id ='屬性嗎?通過調用'view.getId()'來返回適配器的值嗎? – jamis0n