Форум программистов, компьютерный форум, киберфорум
Наши страницы

TabHost, ListView и custom Adapter - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android AdRequest no suggestions available http://www.cyberforum.ru/android-dev/thread1034970.html
Доброго времени форумчане. Пытаюсь добавить рекламу в свое приложение с помощью AdMob сервиса. Подключил библиотеку добавил полностью все как написано было в гайде. public class TestActivity...
Программирование Android Переход на новое окно на андройд приложение Есть главное окно, в главном окне есть 2 кнопки перехода на разные новые окна. 1 кнопка переходит на новое окно, а вторая нет (указал в коде как //кнопка перехода 2). Вопрос где ошибка в коде для //... http://www.cyberforum.ru/android-dev/thread1034863.html
Программирование Android in-app billing тестирование приобретения внутренних продуктов
не могу понять как протестировать покупки и чтобы с карточки не снимало. приложение опубликовал в альфа тесте. инапп внедрил. работает коряво. и чтобы тестировать его работу приходится приобретать...
Программирование Android Как сделать простой progressbar?
Здравствуйте!Бродил по нету в поисках примера для RSS Reader'a.Нашел!Ссылка на пример Все работает...,но такой вопрос.Как сделать progressbar до загрузки приложения? Т.е. до полной загрузки rss...
Программирование Android Использование изображений svg в Android http://www.cyberforum.ru/android-dev/thread1033944.html
Доброй ночи! Интересуюсь вот каким вопросом: есть ли под андроид какая-нибудь рабочая библиотека для парсинга svg в холст или drawable? за последние 3 дня перерыл по запросам svg android и подобным...
Программирование Android Как получить данные из Runnable процесса вызываемого из CallBack функции Доброго всем суток, вопрос новичка, учусь.. Пишу программу под Андроид, в главном классе создал метод MethodName в котором всё делается в другом потоке посредством Runnable. Этот метод вызывается... подробнее

Показать сообщение отдельно
Evgen2sat
19 / 19 / 7
Регистрация: 22.11.2011
Сообщений: 101

TabHost, ListView и custom Adapter - Программирование Android

09.12.2013, 21:35. Просмотров 1204. Ответов 1
Метки (Все метки)

Здравствуйте. В общем есть TabHost c 3 вкладками. При нажатии на вкладку ХЗ показаться данные в ListView, но у меня при нажатии на эту вкладку приложение выдает ошибку и закрывается. Вот код для AndroidTabAndListView (для вкладок)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
 
public class AndroidTabAndListView extends TabActivity {
    // TabSpec Names
    private static final String INBOX_SPEC = "Inbox";
    private static final String OUTBOX_SPEC = "Profile";
    private static final String PROFILE_SPEC = "ХЗ";
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        TabHost tabHost = getTabHost();
         
        // Inbox Tab
        TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
        // Tab Icon
        inboxSpec.setIndicator(INBOX_SPEC, getResources().getDrawable(R.drawable.arrow));
        Intent inboxIntent = new Intent(this, InboxActivity.class);
        // Tab Content
        inboxSpec.setContent(inboxIntent);
         
        // Outbox Tab
        TabSpec outboxSpec = tabHost.newTabSpec(OUTBOX_SPEC);
        outboxSpec.setIndicator(OUTBOX_SPEC, getResources().getDrawable(R.drawable.rihanna));
        Intent outboxIntent = new Intent(this, OutboxActivity.class);
        outboxSpec.setContent(outboxIntent);
         
        // Profile Tab
        TabSpec profileSpec = tabHost.newTabSpec(PROFILE_SPEC);
        profileSpec.setIndicator(PROFILE_SPEC, getResources().getDrawable(R.drawable.arrow));
        Intent profileIntent = new Intent(this, CustomizedListView.class);
        profileSpec.setContent(profileIntent);
         
        // Adding all TabSpec to TabHost
        tabHost.addTab(inboxSpec); // Adding Inbox tab
        tabHost.addTab(outboxSpec); // Adding Outbox tab
        tabHost.addTab(profileSpec); // Adding Profile tab
    }
}
Содержимое CustomizedListView.java (для парсинга xml)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.util.ArrayList;
import java.util.HashMap;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
 
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
 
public class CustomizedListView extends ListActivity {
    // All static variables
    static final String URL = "https://api.api2cart.com/v1.0/product.list.xml?api_key=6aed775211e8c3d556db063d12125d2d&store_key=ed58a22dfecb405a50ea3ea56979360d&start=0&count=19&params=id,u_model,name,price,images,short_description";
    // XML node keys
    static final String KEY_SONG = "product"; // parent node
    static final String KEY_ID = "id";
    static final String KEY_TITLE = "u_model";
    static final String KEY_ARTIST = "name";
    static final String KEY_DURATION = "price";
    static final String KEY_THUMB_URL = "http_path";
    static final String KEY_SHORT_DESCRIPTION = "short_description";
 
    ListView list;
    LazyAdapter adapter;
 
    //@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
 
        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML from URL
        Document doc = parser.getDomElement(xml); // getting DOM element
 
        NodeList nl = doc.getElementsByTagName(KEY_SONG);
        // looping through all song nodes &lt;song&gt;
        for (int i = 0; i < nl.getLength(); i++) {
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            Element e = (Element) nl.item(i);
            // adding each child node to HashMap key =&gt; value
            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
            map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
            map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
            map.put(KEY_SHORT_DESCRIPTION, parser.getValue(e, KEY_SHORT_DESCRIPTION));
            map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
 
            // adding HashList to ArrayList
            songsList.add(map);
        }
 
        list=(ListView)findViewById(R.id.list);
 
        // Getting adapter by passing xml data ArrayList
        adapter=new LazyAdapter(CustomizedListView.this, songsList);
        list.setAdapter(adapter);
 
        // Click event for single list row
        list.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
 
            }
        });
    }
}
Содержимое LazyAdapter.java (адаптер)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.example.androidhive;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
public class LazyAdapter extends BaseAdapter {
 
    public Activity activity;
    public ArrayList<HashMap<String, String>> data;
    public static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 
 
    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }
 
    public int getCount() {
        return data.size();
    }
 
    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.list_row, null);
 
        TextView title = (TextView)vi.findViewById(R.id.title); // title
        TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
        TextView duration = (TextView)vi.findViewById(R.id.duration); // duration
        TextView short_description  = (TextView)vi.findViewById(R.id.short_description);
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
 
        HashMap<String, String> song = new HashMap<String, String>();
        song = data.get(position);
 
        // Setting all values in listview
        title.setText(song.get(CustomizedListView.KEY_TITLE));
        artist.setText(song.get(CustomizedListView.KEY_ARTIST));
        duration.setText(song.get(CustomizedListView.KEY_DURATION));
        short_description.setText(song.get(CustomizedListView.KEY_SHORT_DESCRIPTION));
        imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
        return vi;
    }
}
Содержимое LogCat:
12-09 16:57:11.791: E/AndroidRuntime(445): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidhive/com.example.androidhive.CustomizedListView}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

Добавлено через 25 минут
Сам разобрался. Может кому поможет: в xml файле, где используется ListView android:id написать как
Java
1
2
<ListView
        android:id="@android:id/list"
Вместо
Java
1
ListView list=(ListView)findViewById(R.id,list);
написать
Java
1
ListView list=getListView();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru