Android Extendable ListView Child Click

时间:2011-09-11 20:33:11

标签: java android

目前我正在运行此代码。我在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;
    }

1 个答案:

答案 0 :(得分:0)

使用游标适配器,游标只能迭代(按顺序)。

因此您无法选择特定项目,因此没有getItem(position)方法。 使用不同的适配器为您的基础DataModel,如ArrayAdapter。

这里有一些AdapterImplementation的代码

第一

YourCustomAdapter extends ArrayAdapter<YourDataObject>

比简单实现继承的方法,重要的方法是getViewgetItem

在getView中定义数据在ListView中的显示方式。

使用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);
}