Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 49
#1

BaseAdapter - Android

04.03.2014, 20:01. Просмотров 700. Ответов 1
Метки нет (Все метки)

Доброго времени суток

Есть класс адаптера скопированный с http://idev.by/android/311/
Код:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package ru.myscanner.scannerth;
 
 
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.CursorIndexOutOfBoundsException;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
public class SqlAdapter extends BaseAdapter {
    static final String DB_NAME = "my.db";
    static final int DB_VERSION = 1;
    
    static final String CATALOG_TABLE = "catalogtable";
    static final String CATALOG_ID = "_id";
    private static final int ID_COLUMN = 0;
    static final String CATALOG_NAME = "catalogname";
    private static final int NAME_COLUMN = 1;
    
    private Cursor cursor;
    private SQLiteDatabase database;
    private DBHelper dbOpenHelper;
    private Context context;
    
    public SqlAdapter(Context context) {
        super();
        this.context = context;
        init();
    }
 
    private void init() {
        dbOpenHelper = new DBHelper(context);
        database = dbOpenHelper.getWritableDatabase();
        cursor = getAllEntries();
    }
 
    
 
    @Override
    public int getCount() {
        return cursor.getCount();
    }
 
    @Override
    public Name getItem(int position) {
        if(cursor.moveToPosition(position)){
            long id = cursor.getLong(ID_COLUMN);
            String name = cursor.getString(NAME_COLUMN);
            Name nameOnPositon = new Name(id, name);
            return nameOnPositon;
        }else{
            throw new CursorIndexOutOfBoundsException("Cant move cursor to postion");
        }
        
    }
 
    @Override
    public long getItemId(int position) {
        Name nameOnPosition = getItem(position);
        return nameOnPosition.getId();
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView textView;
        if (null == convertView) {
            textView = (TextView) View.inflate(context, R.layout.list_item,
                    null);
        } else {
            textView = (TextView) convertView;
        }
        textView.setText(getItem(position).getName());
        return textView;
    }
    public long addItem(Name name) {
        ContentValues values = new ContentValues();
        values.put(CATALOG_NAME, name.getName());
        long id = database.insert(CATALOG_TABLE, null, values);
        refresh();
        return id;
    }
 
    public Cursor getAllEntries() {
        String[] columnsToTake = { CATALOG_ID, CATALOG_NAME };
        return database.query(CATALOG_TABLE, columnsToTake, null, null, null, null, CATALOG_ID);
    }
    
    public boolean removeItem(Name nameToRemove) {
        boolean isDeleted = (database.delete(CATALOG_TABLE, CATALOG_NAME + "=?",
                new String[] { nameToRemove.getName() })) > 0;
        refresh();
        return isDeleted;
    }
    public boolean updateItem(long id, String newName) {
        ContentValues values = new ContentValues();
        values.put(CATALOG_NAME, newName);
        boolean isUpdated = (database.update(CATALOG_TABLE, values, CATALOG_NAME + "=?",
                new String[] {id+""})) > 0;
        return isUpdated;
    }
    
    
    public void onDestroy() {
        dbOpenHelper.close();
    }
    private void refresh() {
        cursor = getAllEntries();
        notifyDataSetChanged();
    }
 
 
}
Есть активити в котором хочу получить ListView
Код наипростейший:
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
package ru.myscanner.scannerth;
 
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView;
 
 
public class MainActivity extends ListActivity {
    SqlAdapter adapter;
 
    
    ListView listView;
    
 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpView();
        startService(new Intent(this, CatalogService.class));
    }
    private void setUpView() {
        
        listView = getListView();
        
        adapter = new SqlAdapter(this);
        setListAdapter(adapter);
    }
        
}
Но при запуске выдает портянку:
Лог
03-04 15:24:27.138: E/AndroidRuntime(4209): FATAL EXCEPTION: main
03-04 15:24:27.138: E/AndroidRuntime(4209): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.myscanner.scannerth/ru.myscanner.scannerth.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class linearLayout
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.os.Looper.loop(Looper.java:137)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-04 15:24:27.138: E/AndroidRuntime(4209): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 15:24:27.138: E/AndroidRuntime(4209): at java.lang.reflect.Method.invoke(Method.java:511)
03-04 15:24:27.138: E/AndroidRuntime(4209): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-04 15:24:27.138: E/AndroidRuntime(4209): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-04 15:24:27.138: E/AndroidRuntime(4209): at dalvik.system.NativeStart.main(Native Method)
03-04 15:24:27.138: E/AndroidRuntime(4209): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class linearLayout
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-04 15:24:27.138: E/AndroidRuntime(4209): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.Activity.setContentView(Activity.java:1867)
03-04 15:24:27.138: E/AndroidRuntime(4209): at ru.myscanner.scannerth.MainActivity.onCreate(MainActivity.java:25)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.Activity.performCreate(Activity.java:5008)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-04 15:24:27.138: E/AndroidRuntime(4209): ... 11 more
03-04 15:24:27.138: E/AndroidRuntime(4209): Caused by: java.lang.ClassNotFoundException: android.view.linearLayout
03-04 15:24:27.138: E/AndroidRuntime(4209): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
03-04 15:24:27.138: E/AndroidRuntime(4209): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
03-04 15:24:27.138: E/AndroidRuntime(4209): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.createView(LayoutInflater.java:552)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:643)
03-04 15:24:27.138: E/AndroidRuntime(4209): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
03-04 15:24:27.138: E/AndroidRuntime(4209): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
03-04 15:24:27.138: E/AndroidRuntime(4209): ... 20 more

Прошу подсказать в чем здесь проблема или подсказать адаптер попроще но при обновлении данных бд ListView должен обновиться

Заранее благодарю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 20:01     BaseAdapter
Посмотрите здесь:

Android При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом?
Android Не понятное поведение BaseAdapter
Как вывести в BaseAdapter картинки, занесенные в таблицу? Android
Android Не вижу абстрактных методов в классе BaseAdapter
Android BaseAdapter

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 49
05.03.2014, 20:28  [ТС]     BaseAdapter #2
Разобрался накасячил в разметке)))
Yandex
Объявления
05.03.2014, 20:28     BaseAdapter
Ответ Создать тему
Опции темы

Текущее время: 21:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru