2013-12-16 7 views
0

У меня есть ListView, который показывает изображения, загруженные из Интернета и иметь собственный макет для каждой строки ListView, как показано ниже:ListView не показывает изображения правильно

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="#00f" 
    > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:background="@drawable/wish" 
     android:gravity="center_vertical|center_horizontal" 
     android:paddingBottom="5dp" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:paddingTop="5dp" 
     android:text="" /> 
    </LinearLayout> 

Мой метод GetView является, как Belows:

public View getView(int arg0, View arg1, ViewGroup arg2) 
{ 
    // TODO Auto-generated method stub 

    View v; 

    final TextView tv; 

    if(arg1 == null) 
    { // if it's not recycled, initialize some attributes 
     LayoutInflater lf = (LayoutInflater) conn.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = lf.inflate(R.layout.layitem, arg2, false); 
     tv = (TextView) v.findViewById(R.id.textView1); 
     tv.setLayoutParams(new LinearLayout.LayoutParams(width, width/2)); 
     // tv.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL); 

    } 

    else 
    { 
     v = arg1; 
     tv = (TextView) v.findViewById(R.id.textView1); 

    } 

    if(arg0 < count) 
    { 
     Bitmap object = getImage(iurl[arg0]); 
     tv.setBackground(new BitmapDrawable(conn.getResources(), object)); 
     tv.setText(texts[arg0]); 
    } 

    else 
    { 
     tv.setBackgroundResource(R.drawable.wish); 
     tv.setText(""); 

    } 

    return v; 
} 

Что я пытаюсь сделать, так это то, что у моего ListView есть 20 строк, а моя запись не меньше 20. Так как записи заполняют строки, а остальные имеют фоновое изображение по умолчанию, то фактическое отсутствие записей.

iurl - это массив, содержащий имя изображений для получения с сервера, а тексты - это массив, содержащий сообщения.

Проблема заключается в том, что arg0 не выходит за пределы 2, и все строки содержат изображения, индексированные от 0 до 2, и когда я прокручиваю вниз, чтобы изменить изображение, соответствующее номеру строки.

Могу ли я поместить правильное изображение в нужную строку на первой позиции или оно будет занимать только по мере его прокрутки.

Я устанавливаю ширину текстового изображения в соответствии с шириной экрана мобильного телефона. Это правильный способ сделать. Быстро обновить.

ответ

0

Я думаю, вы должны использовать asyntask для получения изображений с определенного URL в Интернете. Если вы не используете нить, чтобы загружать изображения из Интернета, потребуется долгое время для загрузки изображения и сбоя вашей программы.

+0

Нет проблем с загрузкой изображения. Очевидно, что я делаю через asynctask. Изображения правильно загружаются. – user2779311

0

У вас есть избыточный метод getCount()? Он должен вернуть количество элементов, находящихся в наборе данных, представленном этим адаптером.

+0

да, он возвращает 20, поскольку в списке отображается 20 записей, но проблема находится в изображении, который он показывает. изображения правильно заполняются, так как я прокручиваю вниз – user2779311

+0

, чтобы уточнить, а как насчет текстов? та же проблема? – need1milliondollars

+0

нет, они отображаются правильно. Они загружаются так быстро, что их переход не отображается. – user2779311

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