Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
1

BaseAdapter

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток

Есть класс адаптера скопированный с 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(PhoneLayoutInf later.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 должен обновиться

Заранее благодарю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2014, 20:01
Ответы с готовыми решениями:

BaseAdapter
Есть контейнер для фрагментов (container), есть фрагмент (fragment), есть BaseAdapter и Product Я...

Не понятное поведение BaseAdapter
Добрый день! Проблема в следующем: есть ListView, есть адаптер унаследованный от BaseAdapter. В...

Изменение данных через BaseAdapter в Activity
Добрый день, у меня возникла следующая проблема. У меня имеется стандартное активити с listview и в...

Не вижу абстрактных методов в классе BaseAdapter
Когда создаю свой класс, наследующий BaseAdapter, требуется реализовать 4 абстрактных метода:...

1
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
05.03.2014, 20:28  [ТС] 2
Разобрался накасячил в разметке)))
0
05.03.2014, 20:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2014, 20:28
Помогаю со студенческими работами здесь

Как вывести в BaseAdapter картинки, занесенные в таблицу?
Всем привет! Подскажите пожалуйста, как вывести в BaseAdapter картинки которые я занес в таблицу ...

Передать объект из BaseAdapter по нажатию кнопки в другое activity через
Здравствуйте, помогите со следующей задачей: Есть объект с ценой и наименованием, описание провожу...

При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом?
Здравствуйте! Имеется класс: package ru.contedevel.mathworker; import java.util.ArrayList;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru