Я новичок в разработке приложений для 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
метод. Пожалуйста, скажите мне, где я ошибаюсь, или есть ли другой способ для достижения того, чего я пытаюсь достичь?
Спасибо Abhishek Dabholkar, что сообщение об ошибке недоступно. Но теперь есть одна новая проблема, как я уже говорил, я хотел отобразить изображение на ImageView другой Acitvity из элемента RecyclerView, который был нажат пользователем. Я хотел извлечь файл imageurl из списка arrayList и использовать его для отображения изображения в ImageView другой Acitvity, но приложение выдает сообщение об ошибке в logcat: 'java.lang.IndexOutOfBoundsException: Недопустимый индекс 0, размер равен 0'. –
RecyclerView отображает данные, но когда я нажимаю на него, чтобы открыть другое действие, он говорит IndexOutOfBound. –
Попробуйте использовать 'getLayoutPosition' вместо' getChildPosition' –