Android 如何使用自定义适配器在我的列表视图中获取itemid
我已经为我的列表视图实现了一个自定义适配器,其中包含复选框和文本项。我可以通过覆盖的参数获取位置。但是如何获取列表行的id呢 以下是自定义适配器的代码-Android 如何使用自定义适配器在我的列表视图中获取itemid,android,custom-adapter,Android,Custom Adapter,我已经为我的列表视图实现了一个自定义适配器,其中包含复选框和文本项。我可以通过覆盖的参数获取位置。但是如何获取列表行的id呢 以下是自定义适配器的代码- @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutIn
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.reminder_row, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) rowView.findViewById(R.id.reminderRowTextId);
viewHolder.reminderCheckBox = (CheckBox) rowView.findViewById(R.id.CheckBoxId);
rowView.setTag(viewHolder);
}
final int pos = position;
final ViewHolder holder = (ViewHolder) rowView.getTag();
int idRow = holder.text.getId();
Log.i(TAG, "id of item selected-->" + idRow); <<<<<<------- IT IS GIVING SOME VALUE LIKE 2030771-------->>>
String s = names[position];
holder.text.setText(s);
holder.reminderCheckBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.reminderCheckBox.isChecked()) {
Toast.makeText(getContext(), "pos-->chkd" + pos, Toast.LENGTH_SHORT).show();
long longPos = (long)pos;
dbHelper.completeTask(longPos + 1);
} else {
Toast.makeText(getContext(), "pos-->un--chkd" + pos, Toast.LENGTH_SHORT).show();
}
}
});
holder.text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "TEXT CLICKED" + pos , Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context,ReminderModificationActivity.class);
long longPos = (long)pos;
intent.putExtra(TasksDBAdapter.KEY_ROWID, longPos + 1);
Log.i(TAG, "row clickd --> " + longPos);
((Activity) context).startActivityForResult(intent, ACTIVITY_EDIT);
}
});
return rowView;
}
请看一下划线。任何人都可以帮助我如何获得id。请详细说明,因为我正在学习android。
提前感谢,,
Ray您正在文本视图上调用getId()
,该视图返回与android:id
属性关联的值。此值是自动生成的,可能与R.id.rementerrowtextid
相同
基本上,您并没有在ViewHolder
类中实际设置有意义的ID。只需添加另一个成员变量,并存储所需的任何内容
为了详细说明,适配器用于描述支持列表/数组的大小,并为每个元素提供一个视图。要正确执行此操作,需要实现getView()
和getItem()
getItem()
占据一个位置,这是getView()
的一个参数。将position
传递到getItem()
,这将为您提供来自SQLite的项目。获取该对象的ID,并在ViewHolder
中设置一个变量。请详细说明(可能是一些代码)如何将SQLite ID设置为我的ViewHolder的成员变量。我还包括了数据库创建查询。是的,我想我得到了这个..thnx..)getItemId(位置)有什么问题?
public static final String KEY_TITLE = "title";
public static final String KEY_BODY = "body";
public static final String KEY_DATE_TIME = "reminder_date_time";
public static final String KEY_ROWID = "_id";
public static final String KEY_IS_COMPLETE = "is_complete";
private static final String TAG = "TasksDBAdapter";
private static final String DATABASE_CREATE =
"create table " + DATABASE_TABLE + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_IS_COMPLETE + " boolean default 'false', "
+ KEY_TITLE + " text not null, "
+ KEY_BODY + " text , "
+ KEY_DATE_TIME + " text);";