Я создал пользовательскую ListActivity, которая показывает список навыков и кнопок рядом с ними, а также число. Список выглядит примерно так:
Имена навыков извлекаются из базы данных, а также точки (PTS). Мне нужна помощь в определении того, как установить кнопки на стороне, чтобы они были кликабельными, и они увеличивают или уменьшают их номер столбца связанных точек.
Я попробую использовать двойной бонус и спрошу, знает ли кто-нибудь, как я могу извлечь все эти значения и обновить базу данных, из которой они сделаны, возможно, на кнопку "Finalize" в нижней части экрана.
После раздувания вашего представления XML используйте findViewById, чтобы найти ваши кнопки, а затем добавить onClickListener()
public View getView(int position, View convertView, ViewGroup parent) {
...
final Skill s = (Skill) getItem(position);
if (convertView == null) {
LayoutInflater li = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.yourlayout, null);
} else {
// use cached view
}
Button buttonInc = (Button) convertView.findViewById(R.id.buttonInc);
buttonInc.setOnClickListener(new View.OnClickListener() {
public boolean onClick(View v) {
// call to your core class to increase your data (skill object),
// preferable using AsyncTask.
});
Button buttonDec = (Button) convertView.findViewById(R.id.buttonDec);
buttonDec.setOnClickListener(new View.OnClickListener() {
public boolean onClick(View v) {
// call to your core class to decrease your data (skill object),
// preferable using AsyncTask.
});
....
return convertView;
}
Примечание. Не забудьте кэшировать представление.
Надеемся на эту помощь
Некоторые предположения:
Класс умения подобен ниже
private class Skill {
private int skill = 0;
public void skillUp() {
skill++;
}
public void skillDown() {
skill--;
}
}
До того, как c & p code ниже, вы должны создать папку с файлами int res/values ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="skillId"/>
</resources>
Затем используйте этот код в качестве адаптера навыков
class SkillAdapter extends ArrayAdapter<Skill> {
public SkillAdapter(Context context, int textViewResourceId,
List<Skill> skills) {
super(context, textViewResourceId, skills);
}
private final View.OnClickListener skillUpListener = new View.OnClickListener() {
public void onClick(View v) {
// Note: a better approach may be call to a method
// into your application base class.
Skill s = (Skill) v.getTag(R.id.skillId);
s.skillUp();
}
};
private final View.OnClickListener skillDownListener = new View.OnClickListener() {
public void onClick(View v) {
// Note: a better approach may be call to a method
// into your application base class.
Skill s = (Skill) v.getTag(R.id.skillId);
s.skillDown();
}
};
public View getView(int position, View convertView, ViewGroup parent) {
final Skill s = getItem(position);
RecycledView recycled = null;
if (convertView == null) {
LayoutInflater li = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.skillLayout, null);
recycled.buttonUp = (Button) convertView
.findViewById(R.id.skillUp);
recycled.buttonDown = (Button) convertView
.findViewById(R.id.skillDown);
recycled.buttonUp.setOnClickListener(skillUpListener);
recycled.buttonDown.setOnClickListener(skillDownListener);
} else {
recycled = (RecycledView) convertView.getTag();
}
recycled.buttonUp.setTag(R.id.skillId, s);
recycled.buttonDown.setTag(R.id.skillId, s);
// Fill the row list with your data
return convertView;
}
}
// For recycling stuff
static class RecycledView {
Button buttonUp;
Button buttonDown;
}
Надеюсь, это разъяснит
Привет