我正在尝试创建一个onListItemClick,即使是自定义适配器。项目数组位于 res/values 文件夹中



这是显示数组项及其图像的Java类。我想创建一个OnListItemClick,当用户单击某个项目时,它会转到特定活动:

public class MenuActivity  extends ListActivity{
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState) ;
        setContentView(R.layout.main_menu) ;
        setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, R.id.optionID , getResources().getStringArray(R.array.main_options))) ;
    }
    private class MyAdapter extends ArrayAdapter<String>{
        public MyAdapter(Context context, int resource, int textViewResourceId,
                String[] strings) {
            super(context, resource, textViewResourceId, strings);
            // TODO Auto-generated constructor stub
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
            View row = inflater.inflate(R.layout.list_menu, parent , false) ;
            String[] items  = getResources().getStringArray(R.array.main_options) ;
            ImageView iv = (ImageView) row.findViewById(R.id.imageView1) ;
            TextView tv = (TextView) row.findViewById(R.id.optionID) ;
            tv.setText(items[position]) ;
            if(items[position].equals("Administration")){
                iv.setImageResource(R.drawable.admin) ;
            }
            else if(items[position].equals("Regions and Divisions")){
                iv.setImageResource(R.drawable.regions) ;
            }
            else if(items[position].equals("Monuments")){
                iv.setImageResource(R.drawable.monuments) ;
            }
            else if(items[position].equals("Historical Places")){
                iv.setImageResource(R.drawable.historical) ;
            }
            else if(items[position].equals("Resources")){
                iv.setImageResource(R.drawable.resources) ;
            }
            return row;
        }
    }
}
要么你可以

这样做。

 ListView lv = getListView();
 lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    //Do your stuf here
                }
            });

或者只需将适配器中的的 onclick 侦听器设置在返回它的正上方。

标记为向上,如果它适合您。

最新更新