目前我正在运行此代码。我在eclipse工作,目前正在收到此错误
方法getItem(int)未定义类型Expandable.MySimpleCursorTreeAdapter
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
int childPosition, long id) {
// use groupPosition and childPosition to locate the current item in the adapter
Intent intent = new Intent(Categories.this, com.random.max.Random.class);
Cursor cursor = (Cursor) mscta.getItem(childPosition);
intent.putExtra("EMPLOYEE_ID", cursor.getInt(cursor.getColumnIndex("_id")));
//Cursor cursor = (Cursor) adapter.getItem(position);
//intent.putExtra("EMPLOYEE_ID", cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(intent);
return true;
}
答案 0 :(得分:0)
使用游标适配器,游标只能迭代(按顺序)。
因此您无法选择特定项目,因此没有getItem(position)
方法。
使用不同的适配器为您的基础DataModel,如ArrayAdapter。
这里有一些AdapterImplementation的代码
第一
YourCustomAdapter extends ArrayAdapter<YourDataObject>
比简单实现继承的方法,重要的方法是getView
和getItem
使用ViewHolder缓存您的项目以进行滚动。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View v = convertView;
if (v == null) {
v = inflater.inflate(layoutResource, null);
holder = new ViewHolder();
holder.firstLine = (TextView) v.findViewById(R.id.textview);
v.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) v.getTag();
}
holder.firstLine = "test";
return v;
}
基本上,你把你的东西填满你的东西并保存在你的视图中,下次你不必再次填写你的资源。
第二个方法getItem(int position)很简单: 您必须指定如何在DataStructure上的位置“位置”获取该项目。 如果你有一个数组,你可以写:
@Override
public long getItem(int position) {
return myDataArray.get(position);
}