![](/img/trans.png)
[英]how to implement a long click listener and onclicklistener in single listview
[英]How to implement onclicklistener for listView
我有一个活动(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;
}
}
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(new ImageAndTextAdapter(ctx, R.layout.main_list_item, options, icons));
, 采用:
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// Handle your click here as you want
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.