Android: начало новой деятельности с использованием сетки. - PullRequest
1 голос
/ 06 февраля 2012

Я использовал BaseAdapter для вида сетки, в getView методе BaseAdapter Я начинаю новое действие, используя контекст основного действия, но когда я нажимаю на иконку, я получаю сообщение, приложение не найдено в течение 1 секунды, а затем начинается новая активность, в журнале кота я получаю ошибку PakageManager$PakageNotFoundEception. Заранее спасибо за помощь.

public class ImageAdapter extends BaseAdapter{


    private Context mContext;
    ArrayList<Integer> imgid;
    Uri uri;

    public ImageAdapter(Context c, ArrayList<Integer> imgid2 ) {
        super();
        mContext = c;
        imgid=imgid2;

    }



    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return imgid.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

            ImageView imageView;
            if (convertView == null) {  // if it's not recycled, initialize some attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
               // imageView.setClickable(true);
                imageView.setPadding(8, 8, 8, 8);


                imageView.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                      Log.d("onClick","position ["+position+"]");

                      try {

                          final Intent intent= new Intent("settings");
                          intent.setClass(mContext, listAvtivity.class); //*******
                          if(imgid.get(position)==R.drawable.setting4){mContext.startActivity(intent);}


                          if(imgid.get(position)==R.drawable.google){uri = Uri.parse("http://www.google.com");}

                          if(imgid.get(position)==R.drawable.yahoo){uri = Uri.parse("http://www.yahoo.com");}
                          if(imgid.get(position)==R.drawable.skype){uri = Uri.parse("http://www.skype.com");}


                          Intent intent1 = new Intent(Intent.ACTION_VIEW, uri);
                          mContext.startActivity(intent1);


                    } catch (Exception e) {
                        // TODO: handle exception
                          Log.e("onClick Error: ",e.toString());

                    }
                 }

                  });

            } else {
                imageView = (ImageView) convertView;
            }

            imageView.setImageResource(imgid.get(position));
            return imageView;
    }

}

1 Ответ

1 голос
/ 06 февраля 2012

Не используйте View.OnClickListener внутри вашего метода getView.Используйте OnItemClickListener и добавьте его в свой GridView, чтобы получать уведомления, когда пользователь нажимает на элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...