2015-09-06 3 views
0

Я новичок в разработке приложений для Android. Я пытаюсь отобразить изображение и текст в другом Activity из пункта Recyclerview, который был нажат пользователем. Я получаю недостижимую ошибку сообщения. Пожалуйста, помогите мне!Изображение из щелчка элемента Recyclerview

Вот мой код для получения изображения:

imgUrl = new getDataAsyncTask().getImageUrl(recyclerView.getChildPosition(child)); 

и полный Activity код:

public class RestaurantsAndCafesActivity extends Activity { 

public static final String URL = "http://192.168.8.101:80/jay.html"; 

private RecyclerView mRecyclerView; 
private RCRecyclerAdapter adapter; 
public String imgUrl; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.reyclerview_layout); 

    /* Initialize RecyclerView */ 
    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 

    //parseResult(); 

    new getDataAsyncTask().execute(); 

    final GestureDetector mGestureDetector = new GestureDetector(RestaurantsAndCafesActivity.this, new GestureDetector.SimpleOnGestureListener() { 

     @Override public boolean onSingleTapUp(MotionEvent e) { 
      return true; 
     } 

    }); 


    mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { 
     @Override 
     public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { 
      View child = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY()); 
      if(child!=null && mGestureDetector.onTouchEvent(motionEvent)){ 
       Toast.makeText(RestaurantsAndCafesActivity.this,"Clicked Number "+recyclerView.getChildPosition(child), Toast.LENGTH_SHORT).show(); 
       return true; 
       imgUrl = new getDataAsyncTask().getImageUrl(recyclerView.getChildPosition(child)); 
      } 
      return false; 
     } 

     @Override 
     public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { 

     } 
    }); 
} 
public class getDataAsyncTask extends AsyncTask<Void,Void,Void>{ 
    ArrayList<FeedItem> arrayList = new ArrayList<>(); 

    public String getImageUrl(int pos) 
    { 
     return arrayList.get(pos).thumb; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
       org.jsoup.nodes.Document document = Jsoup.connect(URL).get(); 
       for(Element e : document.select("img[src]")) 
       { 
        Elements imgScr = e.select("img[src]"); 
        String elements = imgScr.attr("src"); 
        String text = imgScr.attr("alt"); 
        String desc = imgScr.attr("title"); 

        arrayList.add(new FeedItem(text, elements, desc)); 
       } 
      } 
     catch(IOException e) 
      { 

      e.printStackTrace(); 
      } 
     return null; 
    } 

    ProgressDialog progressDialog; 
    @Override 
    protected void onPreExecute() 
    { 
     progressDialog = ProgressDialog.show(RestaurantsAndCafesActivity.this,"Loading","Please Wait",true,false); 
    } 
    @Override 
    protected void onPostExecute(Void aVoid) { 
     progressDialog.dismiss(); 
     adapter = new RCRecyclerAdapter(getApplicationContext(),arrayList); 
     mRecyclerView.setAdapter(adapter); 
    } 
} 

} 

Я просто хочу, чтобы получить URL изображения, так что я могу отправить его к другому Activity через Intent.putExtra метод. Пожалуйста, скажите мне, где я ошибаюсь, или есть ли другой способ для достижения того, чего я пытаюсь достичь?

ответ

0

В ваших onInterceptTouchEvent в

imgUrl = new getDataAsyncTask().getImageUrl(recyclerView.getChildPosition(child)); потребности быть, прежде чем return true. Он объявляется после return true;, что делает заявление недоступным.

+0

Спасибо Abhishek Dabholkar, что сообщение об ошибке недоступно. Но теперь есть одна новая проблема, как я уже говорил, я хотел отобразить изображение на ImageView другой Acitvity из элемента RecyclerView, который был нажат пользователем. Я хотел извлечь файл imageurl из списка arrayList и использовать его для отображения изображения в ImageView другой Acitvity, но приложение выдает сообщение об ошибке в logcat: 'java.lang.IndexOutOfBoundsException: Недопустимый индекс 0, размер равен 0'. –

+0

RecyclerView отображает данные, но когда я нажимаю на него, чтобы открыть другое действие, он говорит IndexOutOfBound. –

+0

Попробуйте использовать 'getLayoutPosition' вместо' getChildPosition' –

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