Java 选择listItem时如何启动新活动?

Java 选择listItem时如何启动新活动?,java,android,android-intent,Java,Android,Android Intent,我的android应用程序的主要活动页面主要是一个列表视图,单击该列表中的一个项目,我希望开始一个新的活动。我在MainActivity类的onCreate方法中创建了如下意图: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adapter

我的android应用程序的主要活动页面主要是一个列表视图,单击该列表中的一个项目,我希望开始一个新的活动。我在MainActivity类的onCreate方法中创建了如下意图:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
    ListView lv = (ListView) findViewById(R.id.listview);
    lv.setAdapter(adapter);   

    final MainActivity context  = this;

    lv.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) {
            Intent myIntent = new Intent(context, SubActivity.class);
            myIntent.addFlags(position); //Optional parameters
            context.startActivity(myIntent);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,list);
ListView lv=(ListView)findViewById(R.id.ListView);
低压设置适配器(适配器);
最终MainActivity上下文=此;
lv.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(适配器视图arg0、视图arg1、内部位置、长arg3){
Intent myIntent=新的Intent(context,SubActivity.class);
myIntent.addFlags(位置);//可选参数
背景。起始触觉(myIntent);
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
我的新活动类如下所示:

public class SubActivity extends MainActivity{

ArrayList<String> sublist = new ArrayList<String>();
ArrayAdapter<String> subadapter;

ArrayList<ArrayList<String>> corrReceipts;

@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    int position = intent.getFlags(); //this gives me the index of the receipt

    corrReceipts = super.addedReceipts;

    TextView tv = new TextView(this);
    tv.setText("Hello");


    subadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sublist);
    ListView slv = (ListView) findViewById(R.id.sublistview);
    slv.setAdapter(subadapter); 


    sublist.addAll(corrReceipts.get(position));
    subadapter.notifyDataSetChanged();

    setContentView(slv);

}
公共类子活动扩展了main活动{
ArrayList子列表=新的ArrayList();
阵列适配器子适配器;
ArrayList;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
Intent=getIntent();
int position=intent.getFlags();//这给了我收据的索引
corrReceipts=super.addedReceipts;
TextView tv=新的TextView(此);
tv.setText(“你好”);
subadapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1的子列表);
ListView slv=(ListView)findViewById(R.id.sublistview);
slv.设置适配器(子适配器);
sublist.addAll(correceipts.get(position));
subadapter.notifyDataSetChanged();
setContentView(slv);
}
}


我的子活动类扩展了MainActivity,因为它需要访问一个数组,从中获取信息。当我运行此代码并单击一个列表项时,什么也没有发生。任何关于我做错了什么的帮助都会大有裨益

您只需要一个
项目ClickListener
而不是
项目SelectedListener

lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Intent myIntent = new Intent(context, SubActivity.class);
        myIntent.addFlags(position); //Optional parameters
        context.startActivity(myIntent);
    }
});
lv.setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3)
{ 
Intent myIntent=新的Intent(context,SubActivity.class);
myIntent.addFlags(位置);//可选参数
背景。起始触觉(myIntent);
}
});

OnItemSelectedListener
用于微调器,而
OnItemClickListener
用于列表视图。

我不知道selectedListener是用于微调器的,所以谢谢您。我做了改变,但什么都没有发生开始活动(我的意图);在开始时不需要上下文