работа с проблемой LazyList - PullRequest
       2

работа с проблемой LazyList

3 голосов
/ 05 сентября 2011

Я реализовал пример приложения, используя концепцию отложенного списка. Я хотел бы назначить все значения массива строк текстовому представлению из класса LazyAdapter (extends BaseAdapter)

я использовал этот класс следующим образом

 public class LazyAdapter extends BaseAdapter {

private Activity activity;
private String[] data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;



public LazyAdapter(Activity a, String[] d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.length;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;


    if(convertView==null)
        vi = inflater.inflate(R.layout.item, null);



         String texts[]={"hai","how are you","hello","oyeeee"};

        //i would like to set this texts[] values to TextView

        for(int i=0;i< texts.size();i++)
        { 
         TextView text=(TextView)vi.findViewById(R.id.text);;
         ImageView image=(ImageView)vi.findViewById(R.id.image);
         text.setText("item "+texts[i]);
         imageLoader.DisplayImage(data[position], activity, image);


           }
    return vi;

       }
   }

здесь я могу отображать только oyeee.how, как я могу просмотреть все значения в виде списка

здесь, как мне отобразить все значения строкового массива в списке, как в ленивом списке, который мы отображаем item0, item1, item2, .... и т. Д.,

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Проблема в том, что вы использовали цикл for для каждого заполняемого элемента. И в этом случае, поскольку для каждого представления выполняется ваш цикл for, очевидно, это последний элемент в массиве, который не удивительно, что «oyeeee» печатается во всех строках.

Теперь вам нужно предоставить массив глобально где-то в своей деятельности и изменить код в getView () следующим образом:

// Глобальное объявление массива

 String texts[]={"hai","how are you","hello","oyeeee"};
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;


if(convertView==null)
    vi = inflater.inflate(R.layout.item, null);


     TextView text=(TextView)vi.findViewById(R.id.text);
     ImageView image=(ImageView)vi.findViewById(R.id.image);
     text.setText("item "+texts[postion]);
     imageLoader.DisplayImage(data[position], activity, image);


       }
return vi;

   }

}

Это все, что нужно.

1 голос
/ 05 сентября 2011

Удаление кода GetView и запись следующего кода в функции GetView.

String texts[]={"hai","how are you","hello","oyeeee"};
View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.item, null);
            image = (ImageView) vi.findViewById(R.id.imgview);
            txtviewtitle=(TextView)vi.findViewById(R.id.txtviewtitle);
        }
        txtviewtitle.setText(texts[position]);
        imageLoader.DisplayImage(data[position], activity, image);

        return vi;
...