2013-06-12 45 views
0

我想在列表中添加一個按鈕查看,我在谷歌上搜索了很多,但對我來說沒什麼好。Android:在列表視圖中添加按鈕

這裏是我的代碼:我有2類:

Menu.java

import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.Button; 
    import android.widget.ListView; 
    import android.widget.Toast; 

    public class Menu extends ListActivity implements OnItemClickListener { 

String[] listaMeniu = { "1", "2", "3"}; 
Button butonNota; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ListAdapter(this, listaMeniu)); 

    ListView listView = getListView(); 
    listView.setOnItemClickListener (this); 

    Button btnLoadMore = new Button(this); 
    btnLoadMore.setText("show me"); 

} 
} 

menu.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:padding="5dp"> 

    <ImageView 
    android:id="@+id/1" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="20dp" 
    android:layout_marginTop="5dp" 
    android:src="@drawable/1" /> 

    <TextView 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize = "30dp" 
    android:text="1" /> 


    </LinearLayout> 

ListAdapter.java

 package com.example.a; 

    import android.content.Context; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.ImageView; 
    import android.widget.TextView; 

    public class ListAdapter extends ArrayAdapter { 

private Context context; 
private String[] values; 

public ListAdapter(Context context, String[] values) { 
    // TODO Auto-generated constructor stub 

    super (context, R.layout.menu, values); 
    this.context = context; 
    this.values = values; 
    }  

}

我已經做了列表視圖,但我不知道如何添加列表上方的按鈕。我試圖將其添加到menu.xml中,但它顯示了列表中每個項目的按鈕。希望你們明白我想要什麼。 謝謝!

+1

你必須使用自定義列表視圖.. – Riser

+1

學習基礎轉接器..代替陣列適配器, – Sandy09

+0

檢查此http:// stackoverflow.com/questions/12637301/how-add-onclick-button-in-adapter-listview –

回答

0

您需要重寫方法getView在您的適配器中才能返回Button。

1

最好的方法是創建自定義適配器。例如:

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Button; 

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 

    public MySimpleArrayAdapter(Context context, String[] values) { 
    super(context, R.layout.rowlayout, values); 
    this.context = context; 
    this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    Button buttonView = (Button) rowView.findViewById(R.id.button); 
    buttonView.setText(values[position]); 

    return rowView; 
    } 
} 

這裏是來自「rowlayout.xml」的xml。您必須將佈局文件放在res/layout項目文件夾中。

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

    <Button 
     android:id="@+id/button" 
     android:layout_width="22px" 
     android:layout_height="22px" 
     android:layout_marginLeft="4px" 
     android:layout_marginRight="10px" 
     android:layout_marginTop="4px"> 
    </Button> 

    <TextView 
     android:id="@+id/label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@+id/label" 
     android:textSize="20px" > 
    </TextView> 

</LinearLayout> 

然後就是更新您的Menu.java

public class Menu extends ListActivity implements OnItemClickListener { 

    String[] listaMeniu = { "1", "2", "3"}; 
    Button butonNota; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setListAdapter(new MySimpleArrayAdapter(this, listaMeniu)); 

     ... 
    } 
} 
+0

Stil不工作。我想要這樣的東西: | [圖片]項目1 [圖片]項目2 .... [圖片]項目9 [按鈕] | 我做了一切'直到按鈕,現在我卡住了。 你能解釋我喜歡傻瓜嗎?D?請! – Dani

0

看來,你希望你的第10個項目在列表中是一個按鈕。

這意味着當您覆蓋ArrayAdapter類時,您需要修改GetView(),以便它返回按鈕而不是圖片。創建兩個不同的佈局XML文件,rowlayout_picture.xml和rowlayout_button.xml,然後:

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    LayoutInflater inflater = (LayoutInflater) context 
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = null; 
    if (position < 10) 
     rowView = inflater.inflate(R.layout.rowlayout_picture, parent, false); 
    else 
     rowView = inflater.inflate(R.layout.rowlayout_button, parent, false); 

    return rowView; 
} 
相關問題