функция getView никогда не вызывается - PullRequest
0 голосов
/ 19 марта 2012

У меня есть веб-просмотр, но функция getView никогда не вызывается.Я видел подобный вопрос, но это проблемы там, где другие.Кто-нибудь может мне помочь?

Java-код:

List<String[]> info=new ArrayList<String[]>();
         String[] names_info=new String[5];
         String[] phones_info=new String[5];
         String[] map_info=new String[5];
         String[] web_info=new String[5];
         String[] photos_info=new String[5];
for(int i=0;i<names_info.length;i++)
     {
         info.add(new String[]{names_info[i],phones_info[i],map_info[i],web_info[i],photos_info[i]});
     }
     for (int i = 0; i < info.size(); i++) {
       Log.d("TAG", "item " + i + 
                " name:" +  info.get(i)[0] + 
                " info:" + info.get(i)[1]);
    }
     FacilitiesAdapter adapter = new FacilitiesAdapter(this,info,want_info_display,want_phone_display,want_photos_display);
     //System.out.println(info[0]);
     setListAdapter(adapter);

Я вижу результаты в журнале, так что это означает, что моя информация получает свой результат нормально.

Это мойадаптер.

public class FacilitiesAdapter extends ArrayAdapter<String> {
    private final Context context;
    List <String[]> dataList;

    public FacilitiesAdapter(Context context, List<String[]> dataList, int need_phone, int need_info, int need_photos)  {
        super(context, R.layout.expand_row);
        this.context = context;
        this.dataList = dataList;
        //this.tracks_condition=tracks_condition;
        //this.count=count;
    }
     public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.expand_row, parent, false);
            System.out.println("I am here");
            String[] data = dataList.get(position);
            String name=data[0];
            TextView textView = (TextView) rowView.findViewById(R.id.name);
            System.out.println("I am in the adapter "+name);
            textView.setText(name);
            return rowView;
     }
}

здесь я даже не вижу *System.out.println("I am here");*.любая помощь?

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

изменение super(context, R.layout.expand_row);

с super(context, R.layout.expand_row, dataList);

или ovveride обратного вызова getViewCount и пусть он возвращает номер элемента, который вы хотите показать

1 голос
/ 01 мая 2015

Оказывается, проблема в том, что мой getView () не вызывается, потому что он не виден.Возможно, в макете XML некоторые другие представления скрывают представление списка, или вы изменили видимость на пропавшую.Если представление списка не отображается, функция getView его адаптера вызываться не будет.

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

1 голос
/ 19 марта 2012

Похоже, что вы не используете источник данных где-либо внутри адаптера. (Источником данных является любая вещь, которая предоставляет данные для отображения, например, массив или курсор.) Если нет данных из источника данных getview () вообще не будет вызываться. В вашем случае измените вызов на конструктор суперкласса и передайте «dataList». Затем он будет использован автоматически.

super(context, R.layout.expand_row, dataList);\

Если вы все еще хотите увидеть, что происходит в списке, переопределите функцию getCount ().

public int getCount(){
    return 1;
}

Но как только вы начнете предоставлять данные, измените тип возвращаемого значения на размер данных. Надеюсь, это поможет.

0 голосов
/ 19 марта 2012

Если вы расширяете ListActivity, убедитесь, что ваш идентификатор просмотра списка равен "@android: id / list"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...