1

我有一个列表视图与sublistView项目,我参考Using lists in Android(15.2。ExpandableListView示例)。在onChildClickListener中使用意图找不到方法

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

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

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

下面是我的课:

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; 
    } 
} 

感谢您的帮助。

+0

您可以在您的活动中调用此类MyExpandableListAdapter时显示吗? – 2015-04-04 09:26:17

+0

如果你可以检查我上面提到的链接可能会更好地为您获得更广泛的视图,否则我可以添加我的代码也没有问题。顺便说一句,我在我的主要活动中扩展了ActionBarActivity。 – Umitk 2015-04-04 09:29:31

+0

我的问题是你不能在你的列表适配器中调用startActivity()。它是您的应用程序上下文类的方法。 – 2015-04-04 09:31:05

回答

3

error: cannot find symbol method startActivity(Intent).

由于startActivity方法从BaseExpandableListAdapter不是那么使用上下文来访问startActivity方法。如:

v.getContext().startActivity(intent); 
+0

我可以运行应用程序,但当我点击“未发现处理意图{act = android.intent.action.VIEW dat = market:// details?id = editors_choice}”时,它崩溃。你有什么主意吗? – Umitk 2015-04-04 09:34:28

+0

@Umitk:'editors_choice'是包名? – 2015-04-04 09:35:39

+0

我改变它为包和错误是:没有活动发现处理意图{act = android.intent.action.VIEW dat = market:// details?id = com.myapp.mapcards} – Umitk 2015-04-04 09:47:37

1

试试这个,

定义一个基准为您MyExpandableListAdapter类语境,

private Context context; 

您MyExpandableListAdapter类创建一个构造函数和传递从那里您初始化它的背景下,

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

开始你的活动,

context.startActivity(intent) 
相关问题