Добавление onclicklistener в listview (android)
Мне удалось реализовать отличный список, который я нашел здесь http://www.learn-android.com/2011/11/22/lots-of-lists-custom-adapter/comment-page-1/
но я не могу добавить addclicklistener
Я просто хочу, чтобы иметь возможность сделать действие, когда я нажимаю на строку, с данными, содержащимися в строке, конечно
есть идеи?
спасибо
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.liste);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Setup the list view
final ListView prestListView = (ListView) findViewById(R.id.list);
final prestationAdapterEco prestationAdapterEco = new prestationAdapterEco(this, R.layout.prestation);
prestListView.setAdapter(prestationAdapterEco);
// Populate the list, through the adapter
for(final prestationEco entry : getPrestations()) {
prestationAdapterEco.add(entry);
}
prestListView.setClickable(true);
prestListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Object o = prestListView.getItemAtPosition(position);
String str=(String)o;//As you are using Default String Adapter
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
}
});
}
Ответы
Ответ 1
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object o = prestListView.getItemAtPosition(position);
prestationEco str = (prestationEco)o; //As you are using Default String Adapter
Toast.makeText(getBaseContext(),str.getTitle(),Toast.LENGTH_SHORT).show();
}
});
Ответ 2
Если ваша активность расширяет ListActivity, вы можете просто переопределить метод OnListItemClick()
следующим образом:
/** {@inheritDoc} */
@Override
protected void onListItemClick(ListView l, View v, int pos, long id) {
super.onListItemClick(l, v, pos, id);
// TODO : Logic
}
Ответ 3
list.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Ответ 4
Элемент prestListView.getItemAtPosition(позиция); возвращает виджет пользовательского интерфейса: текст, значок,...
Попробуйте это вместо:
Object o = prestationAdapterEco.getItemAtPosition(position);
или
Object o = arg0.getItemAtPosition(position);
Получить объект из адаптера. Не из списка.
2.
Объект o является объектом prestationEco. Не строка.
Ответ 5
Вы делаете
Object o = prestListView.getItemAtPosition(position);
String str=(String)o;//As you are using Default String Adapter
o
, который вы возвращаете, не является строкой, а prestationEco
, поэтому вы получаете CCE при выполнении (String)o
Ответ 6
Попробуйте следующее:
list.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3)
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});