2015-07-16 2 views
-1

У меня возникла ошибка, специфичная для устройства, которая выглядит странно. В моем ArrayAdapter у меня есть ImageView и по щелчку ImageView он переходит к новому Activity. Все это хорошо работает на моем Samsung S4 (API 19), но на моем Nexus5 (API 22) он сбой без журнала ошибок.Намерение к другому действию в ArrayAdapter - Ошибка на Nexus-5

Это мой код:

FArrayAdapter.java

public FArrayAdapter(Context context, int resourceId, List<Feeds> feedsList) { 
    super(context, resourceId, feedsList); 
    this.resourceId = resourceId; 
    this.context = context; 
    this.mfeeds = feedsList; 
    this.inflater = ((Activity) context).getLayoutInflater(); 
} 

public View getView(int position, View convertView, ViewGroup parent) { 

    if (convertView == null) { 
     inflater = ((Activity) context).getLayoutInflater(); 
     convertView = inflater.inflate(resourceId, parent, false); 
    } 

    ImageView image1 = (ImageView) view.findViewById(R.id.iv_t_1); 



    .... 
    final Intent intent = new Intent(context, ZActivity.class); 

    if (image1 != null) { 
     image1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       intent.putExtra("SelectedImagePosition", 1); 
       Log.v("Error","here"); //i can see this log when i click. App crashes soon after. 
       context.startActivity(intent); 
      } 
     }); 
    } 

} 
+0

где вы инициализирован 'image1'? –

+0

отредактировал..и сделаю это выше – stud91

ответ

1

Во-первых, всегда попробовать не применять внутри адаптера у слушателя.

Вы должны реализовать пункт слушателя в вашем фрагменте, как:

View.OnClickListener listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String name = v.getTag().toString(); 
     } 
    }; 

Если вы хотите передать какую-либо информацию в деятельности через намерения, вы должны установить значение в теге, как:

в адаптере, вы должны передать этот объект listner через конструктор из фрагмента.

и по методу GetView():

image1.setOnClickListener(listener); 
image1.setTag(value); //set value as either class object or any single value here 
+0

да, но я должен передать информацию деятельности через намерение. Эта информация находится в адаптере. Как я могу получить это в своей деятельности – stud91

+0

Спасибо. но проблема в том, что когда я нажимаю изображение, я хочу отправить путь изображения к клику на изображении и строку текстового представления под ним. Поэтому мой вопрос заключается в том, как я могу получить значение элемента, который не был нажат (т. Е. Текстовое изображение). – stud91

+2

. Как и ваш самый быстрый код, кажется, у вас есть объект фидов, где у вас есть путь к изображению и тексту, который вы устанавливаете , если это правда, вы можете установить этот объект Feeds в view.setTag (фиды) и по щелчку элемента, вы можете получить его там, где вы можете получить обе вещи. –

Смежные вопросы