在 onChildClickListener 中使用 Intent 找不到方法

Use of Intent in onChildClickListener cannot find method

我有一个带有 sublistView 项目的 listView,其中我提到了 Using lists in Android(15.2.ExpandableListView 示例)。

我可以通过 Toast 获得每个列表项的点击并显示。

convertView.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    Toast.makeText(activity, children,
        Toast.LENGTH_SHORT).show();
  }

但是当我想在 childClick 中使用 Intent 时,我收到一个错误:cannot find symbol method startActivity(Intent)

下面是我的class:

public class MyExpandableListAdapter extends BaseExpandableListAdapter {
//Some sort of class code in here...

@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {

final String children = (String) getChild(groupPosition, childPosition);
TextView text = null;

if (convertView == null) {
  convertView = inflater.inflate(R.layout.listrow_details, null);
}
text = (TextView) convertView.findViewById(R.id.textView1);
text.setText(children);

convertView.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
        //11 group position exist, each has 5 child
        switch ((groupPosition)){
        case 0:
        if (childPosition == 0) {

            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("market://details?id=editors_choice"));
            startActivity(intent); //cannot find symbol method startActivity(Intent)


        } else if (childPosition == 1) {
            Toast.makeText(activity, "2",
                    Toast.LENGTH_SHORT).show();

        } else if (childPosition == 2) {
            Toast.makeText(activity, "3",
                    Toast.LENGTH_SHORT).show();


        } else if (childPosition == 3) {
            Toast.makeText(activity, "4",
                    Toast.LENGTH_SHORT).show();

        } else if (childPosition == 4) {
            Toast.makeText(activity, "5",
                    Toast.LENGTH_SHORT).show();

        }
        break;

        case 1:
        ...
  }
});
return convertView;
  }
 }

感谢您的帮助。

error: cannot find symbol method startActivity(Intent).

因为startActivity方法不是来自BaseExpandableListAdapter所以使用上下文来访问startActivity方法。如:

v.getContext().startActivity(intent);

试试这个,

在您的 MyExpandableListAdapter 中为上下文定义一个引用 class,

private Context context;

为您的 MyExpandableListAdapter 创建一个构造函数 class 并从实例化它的地方传递上下文,

    public MyExpandableListAdapter(Context con) {
    context = con;
}

开始你的activity,

context.startActivity(intent)