2010-02-18 96 views
0

嗨,我已經有了一個文本視圖和每行中的按鈕的自定義列表視圖。 我無法嘗試使用按鈕。每個按鈕都會觸發不同的意圖。這是列表視圖行的xml文件。Android自定義列表視圖

<?xml version="1.0" encoding="UTF-8"?> 
<RelativeLayout 
android:id="@+id/widget28" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<Button 
android:id="@+id/widget29" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Remind me" 
android:layout_alignParentRight="true" 
/> 

<TextView android:id="@+id/text12" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#ff99ccff" 
    android:text="Text view" /> 
</RelativeLayout> 

然後我有另一個xml文件,它只是包含線性佈局的列表視圖。

這是我的自定義數組類。

public class customArray extends ArrayAdapter<String> { 
int resource; 

public customArray(Context cont, int _resource, List<String> items) { 
     super (cont, _resource,items); 
     resource = _resource; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     RelativeLayout rl; 

    String prod = getItem(position); 
     if (convertView == null) { 
      rl = new RelativeLayout(getContext()); 
      LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      vi.inflate(resource, rl, true); 
     } else { 
      rl = (RelativeLayout)convertView; 
     } 
    TextView t1 = (TextView)rl.findViewById(R.id.text12); 
    t1.setText(prod); 
     Button b1 = (Button)rl.findViewById(R.id.widget29); 
     return rl; 
} 

}

然後最終類從數據庫中獲取數據,並使用自定義適配器來顯示信息。有誰知道我會如何調用每個按鈕?

`public class SatMain extends Activity { 
    /** Called when the activity is first created. 
    * @param cont */ 
    @Override 

public void onCreate(Bundle savedInstanceState) 
{ 

    List<String> results = new ArrayList<String>(); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.satmain); 
    dbAdapter db = new dbAdapter(this); 
    // button.setOnClickListener(m); 
    //---get all titles--- 
    db.open(); 
     db.InsertData(); 

    Cursor c = db.getSat1(); 

    if (c.moveToFirst()) 
    { 
     do {   
      String pub = c.getString(c.getColumnIndex(db.KEY_Artist)); 
      String pub1 = c.getString(c.getColumnIndex(db.KEY_Time)); 



      results.add(pub + pub1); 
     } while (c.moveToNext()); 
    } 
    db.close(); 

    ListView listProducts; 
    customArray ca = new customArray(this, R.layout.button, results); 
    listProducts = (ListView)findViewById(R.id.list1); 
    listProducts.setAdapter(ca); 
    ca.notifyDataSetChanged();  

} 
}` 

回答

0

在適配器的「getView」方法中,應該爲按鈕設置onClick偵聽器。你可以做一個匿名類,以便引用按鈕中行的內容。即,在您的示例中添加以下獲得b1的位置。

b1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //create activity based on prod 
     } 
    }); 
+0

當然,您可以根據「位置」的值區分按鈕, – RickNotFred