listView не заполняется?

Я пытаюсь сделать приложение с listView, которое нужно заполнить из другого класса... Я в основном слежу за этим сайтом: http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/, но почему-то мой адаптер не не работает правильно... И не заполнить мой списокView...

Я создаю новый объект из своего основного класса, например: fillLeftMenu lmenu = new fillLeftMenu(menu);

Я использовал эту строку для начала действия, если это не так:

startActivity(new Intent("com.yahya.training.FILLLEFTMENU"));

В моем AndroidManifest.xml я добавил следующие строки:

   <activity
        android:name=".fillLeftMenu"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.yahya.training.FILLLEFTMENU" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

И класс fillLeftMenu:

public class fillLeftMenu extends ListActivity {

private ProgressDialog myProgressDialog = null; 
private View menu;
ImageView findLocation;
Spinner cityList;
ListView leftList;
String [] textIndex;
Drawable [] imageIndex;
ArrayList<LeftListItems> Left;
listAdapter lAdapter;

public fillLeftMenu(View Lmenu) {
    this.menu = Lmenu;
}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    findLocation = (ImageView) menu.findViewById(R.id.image_findLocation);
    leftList = (ListView) menu.findViewById(R.id.list);

    // add items to listView
    Left = new ArrayList<LeftListItems>();
    textIndex = new String[] {"Bugünün Fırsatları", "Son Dakika Bonusları", "Kadın", "Aile", "Çocuk", "Alışveriş", "Şehirden Kaçış", "Kışa Özel"};
    imageIndex = new Drawable[] {leftList.getResources().getDrawable(R.drawable.kucukicon_01),leftList.getResources().getDrawable(R.drawable.kucukicon_02),leftList.getResources().getDrawable(R.drawable.kucukicon_03),leftList.getResources().getDrawable(R.drawable.kucukicon_04),leftList.getResources().getDrawable(R.drawable.kucukicon_05),leftList.getResources().getDrawable(R.drawable.kucukicon_06),leftList.getResources().getDrawable(R.drawable.kucukicon_07),leftList.getResources().getDrawable(R.drawable.kucukicon_08)};

    lAdapter = new listAdapter(menu.getContext(), R.layout.list_item, Left);
    leftList.setAdapter(lAdapter);

    Runnable viewOrders = new Runnable(){
        public void run() {
            getIndex();
        }
    };

    Thread thread =  new Thread(null, viewOrders, "MagentoBackground");
    thread.start();
    myProgressDialog = ProgressDialog.show(fillLeftMenu.this,"Please wait...", "Retrieving data ...", true);

    leftList.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
        }

    });

}

private Runnable returnRes = new Runnable() {
    public void run() {
        if(Left != null && Left.size() > 0){
            lAdapter.notifyDataSetChanged();
            for(int i=0;i<Left.size();i++)
            lAdapter.add(Left.get(i));
        }
        myProgressDialog.dismiss();
        lAdapter.notifyDataSetChanged();
    }
};

private void getIndex() {
    try{
        LeftListItems item = new LeftListItems();
        for(int i=0; i<textIndex.length; i++) {
            item.setText(textIndex[i]);
            item.setImage(imageIndex[i]);
            Left.add(item);
        }
    }
    catch (Exception e) {
        Log.e("BACKGROUND_PROC", e.getMessage());
    }
    runOnUiThread(returnRes);       
}

private class listAdapter extends ArrayAdapter<LeftListItems> {

    private ArrayList<LeftListItems> items;
    private Context ctx;

    public listAdapter(Context ctx, int textViewResourceId, ArrayList<LeftListItems> items) {
        super(ctx, textViewResourceId, items);
        this.ctx = ctx;
        this.items = items;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;
        if (v == null) {
            // LayoutInflater inflater = LayoutInflater.from(ctx);
            // v = inflater.inflate(R.layout.list_item, null);
            LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item, null);
        }

        LeftListItems index = items.get(position);
        if(index != null) {
            TextView text = (TextView) v.findViewById(R.id.text);
            ImageView img = (ImageView) v.findViewById(R.id.icon);
            if(text != null)
                text.setText(index.getText());
            if(img != null)
                img.setBackgroundDrawable(index.getImage());
        }

        return v;
    }

}   

}

person yahya    schedule 20.02.2012    source источник
comment
Опубликуйте свой основной метод и манифест. fillLeftMenu lmenu = new fillLeftMenu(menu); Что это значит.   -  person Shaiful    schedule 20.02.2012
comment
Следуйте руководству в точности. И попробуйте написать название вашего класса с большой буквы.   -  person Shaiful    schedule 20.02.2012
comment
Вы можете перейти по этой ссылке vogella.de/articles/AndroidListView/.   -  person OnkarDhane    schedule 20.02.2012
comment
@ Shaiful, вы правы, может быть, я делаю неправильно в основном ... Как я могу начать это действие после создания объекта fillLeftMenu?   -  person yahya    schedule 20.02.2012
comment
Вы хотите начать активность при запуске приложения? Или хотите начать с другой деятельности.   -  person Shaiful    schedule 20.02.2012
comment
хочу, чтобы он начинался с другого... Но мне нужно отправить это представление, называемое меню, из основного действия, потому что, когда я пытался найти это представление в этом действии fillLeftMenu, выдается эта ошибка: Вызвано: android.content.res.Resources $NotFoundException: идентификатор ресурса № 0x7f050000 тип № 0x12 недействителен   -  person yahya    schedule 20.02.2012


Ответы (2)


Я думаю, вы застряли в петле в returnRes.

for(int i=0;i<Left.size();i++)
    lAdapter.add(Left.get(i));

Переменная Left является набором данных в lAdapter и уже обновлена ​​в методе getIndex. Здесь вообще не нужна петля.

person Khasm    schedule 20.02.2012

Вам не нужно создавать объект для Activity. Сначала вы должны узнать, как работает Activity. Основы деятельности

Взгляните на это - Создание объекта класса Android Activity

И, пожалуйста, постарайтесь следовать руководству в точности.

Вот несколько других руководств, с которых вы можете начать. http://www.vogella.de/articles/AndroidListView/article.html

Вы найдете образцы в каталоге Android SDK.

person Shaiful    schedule 20.02.2012