2012-04-05 56 views
0

這就是我要實現的onClickListener在類:如何爲綁定到自定義適配器的ListView設置onClickListener?

private void updateUserListView(DatabaseHandler dbh) { 
    List<User> users = dbh.getAllUsers(); 
    ListView listView = (ListView) findViewById(R.id.userslistview); 
    listView.setAdapter(new UserArrayAdapter(BeerFriendActivity.this, users));  
} 

適配器代碼:

public class UserArrayAdapter extends ArrayAdapter<User> { 
private final Context context; 
private final List<User> values; 

public UserArrayAdapter(Context context, List<User> values) { 
    super(context, R.layout.userrow, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final int pos = position; 
    final Context con = context; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.userrow, parent, false); 
    Button button = (Button) rowView.findViewById(R.id.userrowbutton); 
    TextView textView = (TextView) rowView.findViewById(R.id.userrownametext); 
    textView.setText(values.get(position).getName()); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(context,BeerSearchActivity.class); 
      Bundle b = new Bundle(); 
      b.putInt("id", values.get(pos).getId()); 
      myIntent.putExtras(b); //Put your id to your next Intent 
      con.startActivity(myIntent); 
     } 
    }); 

    User user = values.get(position); 
    return rowView; 
}} 

我曾嘗試實施唱首歌,但我得到的是一堆錯誤。我已經閱讀了許多教程和類似的問題,但沒有一個答案似乎適合我的情況,或者我不完全理解它們。任何幫助將非常感激!

+0

是否有你想要的每一行,而不是在一個按鈕理由使每行可點擊? – JRaymond 2012-04-05 20:19:57

+0

我需要這兩件事情發生。每行中的按鈕都可以工作,但我也需要ListView行可點擊。 ListView行點擊方法是我無法工作的。 – user1316202 2012-04-05 20:21:22

回答

0

ListView並未真正設置爲在其中具有可點擊的控件,onClick()方法使用touchEvent而不是該行。儘管有一種解決方法,您可以在XML中爲您的按鈕或其他可點擊元素指定自定義回調,如this example

+0

我應該考慮改變它嗎?這聽起來像一個列表視圖內的按鈕不是正確的方法來做到這一點? – user1316202 2012-04-05 20:50:29

+0

也許......我只是使用該方法來收藏。你想用onItemClick與點擊按鈕做什麼? – JRaymond 2012-04-05 20:52:15

+0

我有一個主要活動的2個列表視圖。我需要底部列表視圖基於第一個列表視圖中選擇的內容。還必須有一個按鈕或者一個長按可以在第一個列表視圖的每一行上執行不同的操作。 – user1316202 2012-04-05 20:59:19

0

的問題是在button.You的重點應改用其他瀏覽,而不是按鈕,每一行(ImageView的爲例)並設置onItemClickListener到你的ListView

+0

我應該考慮改變它嗎?這聽起來像一個列表視圖內的按鈕不是正確的方法來做到這一點? – user1316202 2012-04-05 20:50:06

+0

@ user1316202是的,按鈕裏面的listview防止rowclicking。但是你可以將onClickListener設置爲任何視圖,因此可以將按鈕重新設置爲imageView幫助我 – 2012-04-05 20:55:23

相關問題