2012-04-05 5 views
0

Это класс я хочу реализовать onClickListener в:Как настроить onClickListener для ListView привязан к пользовательскому адаптеру?

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

+0

Мне нужно, чтобы это произошло. Кнопка в каждой строке работает, но мне также нужна строка ListView для клики. Метод щелчка строки ListView - это то, что я не могу заставить работать. – user1316202

ответ

0

ListView не реально установить, чтобы иметь элементы управления, в нем, OnClick() методы потребляют TouchEvent вместо строки. Существует обходной путь, хотя, в котором указывается настраиваемый обратным вызов в формате XML для вашей кнопки или другого элемента интерактивного, как и в this example.

+0

Должен ли я думать о том, чтобы делать это иначе? Похоже, что кнопка внутри списка - это не правильный способ сделать это? – user1316202

+0

Наверное ... Я использую только этот способ обхода. Что вы пытаетесь сделать с помощью onItemClick против нажатия кнопки? – JRaymond

+0

У меня есть 2 списка на основное занятие. Мне нужно, чтобы нижний список был основан на том, что выбрано в первом списке. Также должна быть кнопка или, может быть, длинный клик, чтобы делать разные действия в каждой строке первого списка. – user1316202

0

Проблема заключается в фокусе button.You следует использовать другой вид вместо кнопки в каждой строке (ImageView, например) и установить onItemClickListener к вашему ListView

+0

Должен ли я думать об этом иначе? Похоже, что кнопка внутри списка - это не правильный способ сделать это? – user1316202

+0

@ пользователь1316202 есть, кнопка внутри список просмотр предотвращение след. Но вы можете установить onClickListener на любой вид, поэтому кнопка replcating для ImageView помогает мне –

Смежные вопросы