Проблема с ArrayIndexOutOfBoundsException
Добавлено: 22 май 2015, 12:10
Из БД достаю Линки на изображения, но почемуто 2 последних. Вивиожу их в своей фото голиреи. Но последние 2 картинки не хотят виводитса в полньій екран.
Вот код
Когда пьітаюсь открить на весь екран последние 2 картинки вьілетает вот такие логи
В чем может бьіть проблема?
Вот код
Код: Выделить всё
package com.example.bomba;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import com.squareup.picasso.Picasso;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class Galery extends Activity{
ImageView qq;
Picasso pic;
static ImageAapter adapter;
private Context context;
public static final String[] imagesUrls = {
"http://bomba.vn.ua/sites/default/files/styles/200x200/public/_dsc0072.jpg?itok=ORAFJotr",
"http://bomba.vn.ua/sites/default/files/styles/200x200/public/_dsc0104.jpg?itok=Peitxl1w",
};
final String LOG_TAG = "myLogs";
ListView mLvImages;
ImageView img;
Button btn;
String[] str = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.galery);
mLvImages = (ListView) findViewById(R.id.lvImages);
img =(ImageView)findViewById(R.id.bigimg);
img.setVisibility(View.INVISIBLE);
adapter =null;
Intent intent = getIntent();
String dbqeru = intent.getStringExtra("dbqeru");
MyTask mt = new MyTask();
mt.execute();
try {
str= mt.get();
// Log.d(LOG_TAG, str[0]);
run();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
}
mLvImages.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
img.setVisibility(View.VISIBLE);
mLvImages.setVisibility(View.INVISIBLE);
pic.with(context).load(str[position]).into(img);
Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
+ id);
Log.d(LOG_TAG, imagesUrls[position]);
}
});
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
img.setVisibility(View.INVISIBLE);
mLvImages.setVisibility(View.VISIBLE);
}
});
}
public void run(){
if (str != null) {
ImageAapter adapter = new ImageAapter(this, str);
mLvImages.setAdapter(adapter);
//Log.d(LOG_TAG, Integer.toString(str.length));
Log.d(LOG_TAG, str[2]);
Log.d(LOG_TAG, str[3]);
}
}
class ImageAapter extends ArrayAdapter<String> {
LayoutInflater mInflater;
Picasso mPicasso;
public ImageAapter(Context context, String[] imagesurls) {
super(context, R.layout.list_item, imagesurls);
mInflater = LayoutInflater.from(context);
mPicasso = Picasso.with(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = mInflater.inflate(R.layout.list_item, parent, false);
}
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
mPicasso.load(getItem(position)).resizeDimen(R.dimen.image_size, R.dimen.image_size). centerInside().into(imageView);
return view;
}
}
}
class MyTask extends AsyncTask<String, String, String[]> {
final String LOG_TAG = "myLogs";
int i=0;
private String[] photo_arr = null;
String[] fff = {"http://bomba.vn.ua/sites/default/files/_dsc0104.jpg",
"http://bomba.vn.ua/sites/default/files/_dsc0104.jpg" +
"","http://bomba.vn.ua/sites/default/files/_dsc0104.jpg"};
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected String[] doInBackground(String... params) {
try {
Class.forName("com.mysql.jdbc.Driver");
Log.d(LOG_TAG, "--- Driver is conected!!! ---");
} catch (ClassNotFoundException e) {
Log.d(LOG_TAG, "--- Driver is NOT conected!!! ---");
Log.d(LOG_TAG,e.toString());
e.printStackTrace();
return null;
}
Connection conn = null;
String url1 = "jdbc:mysql://sql5.freesqldatabase.com:3306/sql578111";
String name = "******";
String password = "*******";
int i=0;
String ss;
String qury="SELECT smal, id FROM photo_travhol";
try {
conn = DriverManager.getConnection(url1, name, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(qury);
Log.d(LOG_TAG,"есть подключение к БД");
rs.last();
int qwe = rs.getInt("id");
rs.first();
rs.beforeFirst();
photo_arr = new String[qwe];
while (rs.next()) {
String lastName = rs.getString("smal");
photo_arr[i]=lastName;
i++;
// downloadFile(lastName);
}
Log.d(LOG_TAG,"есть подключение к БД");
} catch (java.sql.SQLException e) {
Log.d(LOG_TAG,e.toString());
Log.d(LOG_TAG,"ошибка подключения к БД");
}
if (conn == null) {
Log.d(LOG_TAG,"нет данных БД");
} else {
Log.d(LOG_TAG,"есть данные!");
}
return photo_arr;
}
private void downloadFile(String url){
// photo_arr[i]=url;
// i++;
// Log.d(LOG_TAG, "Update. Result = " + photo_arr[i]);
}
protected void onProgressUpdate(String values) {
super.onProgressUpdate(values);
}
protected void onPostExecute(String[] result) {
super.onPostExecute(result);
Log.d(LOG_TAG, "End. Result = " + result);
}
}
Код: Выделить всё
05-22 11:59:20.261: W/dalvikvm(4285): threadid=1: thread exiting with uncaught exception (group=0x40a84228)
05-22 11:59:20.271: E/AndroidRuntime(4285): FATAL EXCEPTION: main
05-22 11:59:20.271: E/AndroidRuntime(4285): java.lang.ArrayIndexOutOfBoundsException: length=2; index=-1
05-22 11:59:20.271: E/AndroidRuntime(4285): at com.example.bomba.Galery$1.onItemClick(Galery.java:87)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.widget.AbsListView.performItemClick(AbsListView.java:1099)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.widget.ListView.performItemClick(ListView.java:4758)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2556)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.widget.AbsListView$1.run(AbsListView.java:3223)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.os.Handler.handleCallback(Handler.java:608)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.os.Handler.dispatchMessage(Handler.java:92)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.os.Looper.loop(Looper.java:156)
05-22 11:59:20.271: E/AndroidRuntime(4285): at android.app.ActivityThread.main(ActivityThread.java:4987)
05-22 11:59:20.271: E/AndroidRuntime(4285): at java.lang.reflect.Method.invokeNative(Native Method)
05-22 11:59:20.271: E/AndroidRuntime(4285): at java.lang.reflect.Method.invoke(Method.java:511)
05-22 11:59:20.271: E/AndroidRuntime(4285): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-22 11:59:20.271: E/AndroidRuntime(4285): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-22 11:59:20.271: E/AndroidRuntime(4285): at dalvik.system.NativeStart.main(Native Method)