0

也有類似的問題,但我還沒有看到一個答案這個非常直接的問題:你如何設置一個自定義列表視圖混合的佈局?Android:使用刪除按鈕設置ListView

我試圖建立一個列表視圖,其中每一行有以下幾點:

初級文本行,二次的(子)文本行,和刪除按鈕。另一種方法是讓每行在可見空間的頁眉或頁腳處使用刪除按鈕進行選擇(但顯然不在可滾動空間中)。說實話,在這一點上更容易一些是可取的。

我剩下的就是設置一個輔助佈局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="fill_parent" 
    android:orientation="vertical" > 
    <ListView android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:choiceMode="multipleChoice" 
    android:id="@+id/android:list"/> 
</LinearLayout> 

每一行的佈局是這樣的:

<?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="vertical"> 
    <TextView android:id="@+id/line_a" 
    android:textSize="14dp" 
    android:textColor="#FFFFFF" 
    android:textStyle="italic" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/line_b" 
    android:textSize="12dp" 
    android:textColor="#BFFF00" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

這個選項可以設置每行一個不錯的多色兩級文本在ListView 。

那麼接下來呢?要在右側添加一個按鈕,我需要使用右側的按鈕來設置另一個佈局(網格可能是?2列1行?)。另一種替代方法就像是用水平方向在另一個線性佈局中包裹現有的垂直線性佈局,是的?

難道這不會讓任何人感到尷尬和痛苦嗎? :)

回答

2

創建一個ListView的ArrayAdapter:

listView = (ListView) findViewById(R.id.listView); 
listViewArrayAdapter listViewArrayAdapter = new listViewArrayAdapter(this, values); 
listView.setAdapter(listViewArrayAdapter); 

然後創建一個內部類:

public class ListViewArrayAdapter extends ArrayAdapter<Value> { 

    Context context; 
    Value[] values; 

    public ListViewArrayAdapter(Context context, Value[] values) { 
     super(context, R.layout.layout_with_list, values); 
     this.values = values; 
     this.context = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.list_item, parent, false); 

     TextView titleTextView = (TextView) convertView.findViewById(R.id.titleTextView); 
     titleTextView.setText(values[position].getName()); 
      // If you have buttons in your list_item.xml, you can inflate them an then create a listener for them 

     return convertView; 

    } 
} 
+0

這就是答案。 – 2013-04-09 21:37:41

+0

謝謝阿里。我假設我膨脹的「list_item」佈局對應於我上面共享的行佈局? – Raevik 2013-04-10 13:02:47

0

爲什麼不`噸您使用相對佈局,我必須讓這個3H前。這是我的ItemRow代碼。我認爲更棘手的是處理這個按鈕的onClick方法。在我的代碼中,第二個圖像是刪除按鈕,圖像白色的onClick方法。我在iPhone

延長一個ArrayAdapter,因爲我想只有在編輯模式下此圖片是可見的,如刪除聯繫人項目
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/layout_item" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 
<ImageView android:id="@+id/image_list_icon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:contentDescription="@string/image_view" 
    android:src="@drawable/clock_white" /> 
<TextView android:id="@+id/text_list_label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_toRightOf="@id/image_list_icon" 
    android:paddingLeft="5dp" 
    android:text="@string/hello_world" /> 
<ImageView android:id="@+id/image_list_remove" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:contentDescription="@string/image_view" 
    android:src="@drawable/remove" /> 
<TextView android:id="@+id/text_list_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_toLeftOf="@id/image_list_remove" 
    android:paddingRight="10dp" 
    android:text="@string/text_x" /> 

相關問題