Java 如何为listView实现onclicklistener

Java 如何为listView实现onclicklistener,java,android,Java,Android,我有一个活动(MainActivity),它调用第二个活动(ImageAndTextAdapter)来显示列表视图。 我希望能够单击每个列表项以打开一个新活动。但是,我不知道如何正确实现setOnItemClickListener函数。我试过很多不同的方法。任何帮助都将不胜感激 主要活动: public class MainActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceSta

我有一个活动(MainActivity),它调用第二个活动(ImageAndTextAdapter)来显示列表视图。 我希望能够单击每个列表项以打开一个新活动。但是,我不知道如何正确实现setOnItemClickListener函数。我试过很多不同的方法。任何帮助都将不胜感激

主要活动:

public class MainActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Context ctx = getApplicationContext();
Resources res = ctx.getResources();

String[] options = res.getStringArray(R.array.country_names);
TypedArray icons = res.obtainTypedArray(R.array.country_icons);

setListAdapter(new ImageAndTextAdapter(ctx, R.layout.main_list_item, options, icons));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;}


    }
ImageAndTextAdapter.java:

public class ImageAndTextAdapter extends ArrayAdapter<String> {

private LayoutInflater mInflater;

private String[] mStrings;
private TypedArray mIcons;

private int mViewResourceId;

public ImageAndTextAdapter(Context ctx, int viewResourceId,
    String[] strings, TypedArray icons) {
super(ctx, viewResourceId, strings);

mInflater = (LayoutInflater)ctx.getSystemService(
        Context.LAYOUT_INFLATER_SERVICE);

mStrings = strings;
mIcons = icons;

mViewResourceId = viewResourceId;
}

@Override
public int getCount() {
return mStrings.length;
}

@Override
public String getItem(int position) {
return mStrings[position];
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(mViewResourceId, null);

ImageView iv = (ImageView)convertView.findViewById(R.id.option_icon);
iv.setImageDrawable(mIcons.getDrawable(position));

TextView tv = (TextView)convertView.findViewById(R.id.option_text);
tv.setText(mStrings[position]);

return convertView;
}
}
公共类ImageAndTextAdapter扩展了ArrayAdapter{
私人停车场;
私有字符串[]mStrings;
私有型Darray mIcons;
私有int-mViewResourceId;
公共图像和文本适配器(上下文ctx、int viewResourceId、,
String[]字符串,类型Darray图标){
超级(ctx、viewResourceId、字符串);
mInflater=(LayoutInflater)ctx.getSystemService(
上下文。布局(充气机和服务);
mStrings=字符串;
mIcons=图标;
mViewResourceId=viewsourceid;
}
@凌驾
public int getCount(){
返回mStrings.length;
}
@凌驾
公共字符串getItem(int位置){
返回mStrings[位置];
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
convertView=mInflater.inflate(mViewResourceId,null);
ImageView iv=(ImageView)convertView.findViewById(R.id.option_图标);
iv.setImageDrawable(mIcons.getDrawable(位置));
TextView tv=(TextView)convertView.findViewById(R.id.option\u text);
tv.setText(mStrings[position]);
返回视图;
}
}
XML文件:

<resources>
<string-array name="country_names">
    <item>Columbia</item>
    <item>Peru</item>
    <item>Argentina</item>
 </string-array>
<array name="country_icons">
    <item>@drawable/Columbia</item>
    <item>@drawable/Peru</item>
    <item>@drawable/Argentina</item>
</array>
</resources>

哥伦比亚
秘鲁
阿根廷
@可提取/哥伦比亚
@可提取/秘鲁
@可提取/阿根廷
在onCreate()方法中,在
setListAdapter(新的ImageAndTextAdapter(ctx,R.layout.main_列表_项,选项,图标)之后,使用:

getListView().setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        // Handle your click here as you want

    }
});
getListView().setOnItemClickListener(新的OnItemClickListener()){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//按需点击此处
}
});

您好,谢谢您。我试着像这样处理点击:Class selected=Class.forName(“com.shaadcorp.countries.”+openClass);意向选定内容=新意向(此,已选定);startActivity(SelectedContent);}catch(ClassNotFoundException e){e.printStackTrace();但出现错误,有什么建议吗?单击某个项目时要启动的活动的名称是什么?我有3个不同的活动:columbiainfo.java、peruinfo.java、argentainfo.java然后在
onItemClick()内执行此操作。
Intent activityIntent;if(position==0){activityIntent=newintent(MainActivity.this,ColumbiaInfo.class);}else if(position==1){activityIntent=newintent(MainActivity.this,PeruInfo.class);}else{activityIntent=newintent(MainActivity.this,ArgentinaInfo.class);}startActivity(activity Intent);