2015-01-24 2 views
0

Im делает приложение, которое берет данные из xml, помещает в базу данных и отображает эти данные (имя изображения и URL) в виде сетки изображений. Я добавил onitemclicklistener, чтобы получить URL-адрес (из ArrayList) и перейти к другому действию, чтобы я мог преобразовать URL-адрес в растровое изображение и отобразить его в виде изображения.ArrayList странное поведение

//cursor that returns all items from databse to a arraylist 
    final Cursor cursor = entry.getAllRows(); 

//arraylist 
      names = new ArrayList<Post>(); 

      cursor.moveToFirst(); 
      //adding all database values to the arraylist 
      while (cursor.isAfterLast() == false) { 
       names.add(new Post(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("link")))); 
       cursor.moveToNext(); 



      } 

теперь код onitemclicklistsner:

@Override 
      public void onItemClick(AdapterView<?> parent, View v, int position, 
        long id) { 
       Intent i = new Intent(getApplicationContext(), FullImageActivity.class); 

       position++; 
      Post text = names.get(position); 
      Log.i("POSITION", "Exeption:"+position + " " + text); 

       //i.putExtra("id", text); 
       //startActivity(i); 

      } 
     }); 

Im получая правильную позицию, но проблема в том, что я не могу получить соответствующий URL из положения. Его не отображают ссылку, но отображают это: [email protected] Вопрос в том, как я не могу получить отдельную позицию позиции у arraylist?

ответ

0

ваша проблема

names.get(position); 

, что вы пытаетесь сделать, это получить Почту объект не имя

так в пост вашего класса там будет поданной назван Имя

получить это имя как

в классе post создайте геттер и сеттер для имени , а затем в прослушивателе написать

String name =names.get(position).getName(); 

или

в вашем почтовом классе сделать имя общественного

public String name; 

, а затем в прослушивателе

String name =names.get(position).name; 

или то, что вы делаете

Post text = names.get(position); 
    Log.i("POSITION", "Exeption:"+position + " " + text.name); 
+0

спасибо, я очень люблю вас, ваш ответ был легко понять и решить мою проблему. Строка urlimg была закрытой, и я изменил ее и использовал ваш код. –

+0

Не возражаете, чтобы объяснить, почему нужно быть публичным? Знание никогда не бывает слишком большим. –

+0

Открытый идентификатор используется для доступа к переменной или методу вне класса, как вы это делали. –

0

Вы получаете один пост по индексу (индекс быть вы указав в переменной позиции).

Вам необходимо реализовать метод public String toString(){} в классе Post, чтобы увидеть значения полей в объекте Post.