Пользовательский адаптер массива, возвращающий пустой экран? - PullRequest
0 голосов
/ 06 марта 2012

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

Я использую собственный ArrayAdapter с именем ListRow. Он отлично работает с обычным Activity, но не с ListActivity, в котором он должен быть, чтобы мое приложение работало.

Ниже приведен пример кода, который я использую. Буду признателен за любую помощь, и вы будете помогать тонну!

 ListView mListview;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setListAdapter(new ListRow(this, THEME_NAMES, THEME_ICONS));
    getListView().setTextFilterEnabled(true);
}

public class ListRow extends BaseAdapter {
    private Context mContext;
    private String[] mThemeNames = THEME_NAMES;
    private int[] mThemeIcons = THEME_ICONS;


    public ListRow(Context c, String[] t, int[] i) {
        mContext = c;
        mThemeNames = t;
        mThemeIcons = i;
        mListview=(ListView)findViewById(R.id.list);
    }

    @Override
    public int getCount() {
        return mThemeNames.length;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        return 0;
    }

    @Override
    public View getView(int position, View converView, ViewGroup parent) {
        View List;
        if(converView==null){
            List=new View(mContext);
            LayoutInflater mLayoutinflater=getLayoutInflater();
            List=mLayoutinflater.inflate(R.layout.list_view, parent, false);
        } else {
            List = (View)converView;
        }
        ImageView imageView = (ImageView)List.findViewById(R.id.image);
        TextView textView = (TextView)List.findViewById(R.id.text);
        imageView.setImageResource(mThemeIcons[position]);
        textView.setText(mThemeNames[position]);       
        return List;
    }
}

А вот макет, который я определил для каждого элемента списка

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" >
    <ImageView 
    android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
    android:scaleType="center"
    android:id="@+id/image" 
    android:layout_alignParentLeft="true"
    android:contentDescription="@string/preview" />
    <TextView 
        android:id="@+id/text" 
        android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/image" />
</RelativeLayout>

Если вы можете, пожалуйста, используйте маленькие слова со мной, лол, ява оказалась трудной для понимания для меня, а также постарайтесь объяснить как можно больше. Заранее спасибо!

выяснил это! Так что я просто провел вас через ад. Макет, содержащий мои элементы списка, называется list_item, а не list_view. Однако я многому научился здесь, так что СПАСИБО ВСЕМ ОЧЕНЬ МНОГО! Хотелось бы, чтобы я мог помочь вам, ребята ...

Мораль этого вопроса? ПРОВЕРЬТЕ СВОИ НАСТРОЙКИ !!

Ответы [ 2 ]

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

Вам нужно установить адаптер таким образом

setListAdapter(new ListRow(this, your_theme_names_array, your_theme_icon_array));

Для этого вам не нужно использовать ArrayAdapter, то есть только для создания адаптера для массива String

* 1007 EDITED ** * 1008 У XML формата нет проблемы, я думаю.

Проверьте список, приведенный ниже один за другим

Контрольный список

  • Проверьте, указывает ли R.layout.list_view на макет, который вы задали в Вопросе.
  • Попробуйте сделать это для установки адаптера setListAdapter (new ListRow (this, String [] {}, int [] {})); он покажет пустой экран (если вы получаете пустой экран, это означает, что либо THEME_NAMES, либо THEME_ICONS имеют значение NULL или их значения имеют значение NULL)
  • Удалить строку imageView.setImageResource (mThemeIcons [position]); а также textView.setText (mThemeNames [положение]); это также даст вам пустой экран (Если вы получаете пустой экран, тогда R.layout.list_view не содержит R.id.image или R.id.text.
0 голосов
/ 06 марта 2012

Вы должны добавить свой mListView в свой ArrayAdapter в setListAdapter. Только тогда содержимое вашего списка будет отображаться в шаблоне, который вы упомянули в customadapter. Я не вижу, где вы добавили элементы в просмотр списка.

...