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

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

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

Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView - Программирование Android

23.07.2015, 17:47. Просмотров 889. Ответов 10
Метки нет (Все метки)

Пишу простенькое приложение по сбору цен на разные товары, сейчас пытаюсь оптимизировать часть кода который работает со списком, когда разметка элемента списка была из 2-3 элементов проблем не возникало, но когда я сделал сложную разметку, элементы списка не реагируют на мое нажатие. Но лонгКлик на EditText ловится, вообще не пойму что не так...

Код
Кликните здесь для просмотра всего текста
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
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(lMainPage);
        mDbHelper = new DBworker(this);
        mDbHelper.open();
 
        lv = (ListView) findViewById(android.R.id.list);
 
        fillData();
        System.out.println(mDbHelper.db.getPath());
        registerForContextMenu(getListView());
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                onListItemClick((ListView) adapterView, view, i, l);
            }
        });
 
        bAdd = (Button) findViewById(R.id.bAdded);
        bDel = (Button) findViewById(R.id.bDeleted);
    }
 
    private void fillData(){
        mNotesCursor = mDbHelper.fetchAllNotes();
        startManagingCursor(mNotesCursor);
        String[] from = {DBworker.KEY_NAME};
        int[] to = {lItemText};
        CursorAdapter notes = new MyCustomAdapter(this, mNotesCursor);
        setListAdapter(notes);
    }
метод onListItemClick
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent i = new Intent(this, Item.class);
        i.putExtra(DBworker.KEY_ID, id);
        startActivityForResult(i, ACTIVITY_EDIT);
    }


Разметки
Кликните здесь для просмотра всего текста
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <ListView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@android:id/list"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"/>
    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp" android:gravity="bottom">
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/bAdded" android:layout_weight="1" android:onClick="onClick"/>
        <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/bDeleted" android:layout_weight="1" android:onClick="onClick"/>
    </LinearLayout>
</LinearLayout>
Элемент списка
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal"
              android:paddingBottom="1dip"
              android:paddingLeft="6dip"
              android:paddingRight="6dip"
              android:paddingTop="1dip" >
    <EditText
            android:id="@+id/priceGoodsName"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:paddingBottom="4dp"
            android:paddingTop="0dp"
            android:editable="false" android:enabled="true" android:focusable="false"
            android:focusableInTouchMode="true">
    </EditText>
 
    <TableLayout
            android:layout_width="0dp"
            android:layout_height="72dp"
            android:layout_weight="1" android:clickable="true" android:focusableInTouchMode="true">
        <TableRow
                android:layout_width="wrap_content"
                android:layout_height="36dp"
                android:layout_weight="1">
            <TextView
                    android:id="@android:id/empty"
                    android:layout_width="80dp"/>
 
            <TextView
                    android:id="@+id/pricePDay"
                    android:layout_width="30dp"
                    android:layout_height="match_parent"
                    android:focusable="false"
                    android:gravity="center_vertical|center_horizontal"
                    android:padding="0dp"
                    android:textSize="20dp" android:visibility="gone"/>
 
            <EditText
                    android:id="@+id/pricePFactName"
                    android:layout_width="80dp"
                    android:layout_height="match_parent"
                    android:background="@drawable/editbox_background_disabled"
                    android:focusable="false"
                    android:gravity="center_horizontal|center_vertical"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp" android:inputType="number"/>
 
            <EditText
                    android:id="@+id/pricePFPrice"
                    android:layout_width="80dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@drawable/editbox_background_disabled"
                    android:focusable="false"
                    android:gravity="center_horizontal|center_vertical"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp" android:inputType="number"/>
 
            <EditText
                    android:id="@+id/pricePPrice"
                    android:layout_width="80dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@drawable/editbox_background_disabled"
                    android:focusable="false"
                    android:gravity="center_vertical|center_horizontal"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp" android:inputType="number"/>
 
            <Button
                    android:id="@+id/priceBCopy"
                    android:layout_width="20dp"
                    android:layout_height="40dp"
                    android:layout_gravity="center_vertical"
                    android:paddingBottom="4dp"
                    android:paddingLeft="0dp"
                    android:paddingRight="0dp"
                    android:paddingTop="0dp"
                    android:text="@string/price_btn_copy"
                    android:textSize="20dp" />
 
            <ImageButton
                    android:id="@+id/priceBPrices"
                    android:layout_width="30dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:src="@drawable/choos" />
        </TableRow>
 
        <TableRow
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="1" >
 
            <TextView
                    android:id="@+id/priceDate"
                    android:layout_height="wrap_content"
                    android:textSize="20dp" android:layout_width="80dp"/>
 
            <TextView
                    android:id="@+id/priceDay"
                    android:layout_height="match_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:maxLength="2"
                    android:nextFocusDown="@+id/priceFName"
                    android:padding="0dp"
                    android:textSize="20dp"/>
 
            <EditText
                    android:id="@+id/priceFName"
                    android:layout_width="50dp"
                    android:layout_height="match_parent"
                    android:background="@android:drawable/editbox_background"
                    android:gravity="center_vertical|center_horizontal"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:nextFocusDown="@+id/priceFPrice"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp"/>
 
            <EditText
                    android:id="@+id/priceFPrice"
                    android:layout_width="50dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@android:drawable/editbox_background"
                    android:gravity="center_vertical|center_horizontal"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:nextFocusDown="@+id/pricePrice"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp"
                    android:focusable="false"/>
 
            <EditText
                    android:id="@+id/pricePrice"
                    android:layout_width="50dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="@android:drawable/editbox_background"
                    android:gravity="center_vertical|center_horizontal"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:nextFocusDown="@+id/priceDay"
                    android:paddingBottom="0dp"
                    android:paddingLeft="6dp"
                    android:paddingRight="6dp"
                    android:paddingTop="0dp"
                    android:textSize="20dp" />
 
            <TextView
                    android:id="@android:id/empty"
                    android:layout_width="70dp"
                    android:layout_height="wrap_content"
                    android:gravity="center_vertical|center_horizontal"
                    android:textSize="20dp" />
 
            <ToggleButton
                    android:id="@+id/priceBMiss"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:background="@android:drawable/btn_default"
                    android:paddingBottom="4dp"
                    android:paddingLeft="0dp"
                    android:paddingRight="0dp"
                    android:paddingTop="0dp"
                    android:textOff="@string/price_btn_miss"
                    android:textOn="@string/price_btn_miss"
                    android:textSize="20dp" />
        </TableRow>
    </TableLayout>
 
</LinearLayout>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView (Программирование Android):

В ListView не работает OnItemClickListener - Программирование Android
Здравствуйте, Впервые попался на такую проблему, что в ListView не работает OnItemClickListener. При клике на элемент списка, в...

Получить из ListView адаптера значение в OnItemClickListener - Программирование Android
В OnItemClickListener передается заполненый адаптер и номер позиции. Как вытянуть из него значение объекта ? public void...

Элемент списка listView и БД SQLlite - Программирование Android
по сути задача сводиться к тому что нужно реализовать следующее : создаём элементы в списке по кнопке адд(в Edit_activity) и по кнопке сейв...

Как заставить хук ловить 2 клавиши? - C#
Есть глобальный хук using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Нажатие на элемент списка - jQuery
Есть такой раскрывающийся список на html: &lt;select id=&quot;city_name&quot; name=&quot;ext_params&quot;&gt;&lt;option label=&quot;Любой город&quot; value=&quot;0_0_0&quot;&gt;Любой...

Как можно ловить нажатие кнопки Open в диалоговом окне xlDialogOpen? - VBA
Как можно ловить нажатие кнопки Open в диалоговом окне xlDialogOpen? На самом деле, мне нужно создать возможность указать программе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
26.07.2015, 18:35 #2
android:editable="false"

Добавлено через 23 секунды
Не в этом проблема?
0
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
27.07.2015, 15:14  [ТС] #3
Не, это убирает ввод текста для Эдитов, сам эдит реагирует на нажатие, мне вот нужно, что бы весь элемент списка реагировал как целостный объект.
0
Pablito
2487 / 1932 / 604
Регистрация: 12.05.2014
Сообщений: 6,791
Завершенные тесты: 1
27.07.2015, 15:29 #4
по идее надо для root лаяута итема списка делать clickable = true
это навскидку, проверять нет времени
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
27.07.2015, 16:03 #5
Цитата Сообщение от Raus Посмотреть сообщение
элементы списка не реагируют на мое нажатие
Так в чем проблема то? В реакции элемента, т.е. вид изменяется или в действии?

Добавлено через 21 секунду
код где полностью
0
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
03.08.2015, 10:26  [ТС] #6
Вот у меня есть список, каждый элемент имеет сложную разметку. Если разметка состоит из простого элемента TextView, то при нажатии на сам элемент я могу ловить слушателем событие.
Но как, только я делаю элемент со сложной разметкой, то слушатель отказывается ловить нажатие на элемент списка...

class MyActivity
Кликните здесь для просмотра всего текста
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.example.myapp;
 
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.ListView;
 
 
public class MyActivity extends ListActivity {
    private static Cursor mNotesCursor;
    private static DBworker mDbHelper;
    private static final int ACTIVITY_EDIT=1;
    private static final int ACTIVITY_CREATE=0;
 
    private static final int INSERT_ID = Menu.FIRST;
    private static final int DELETE_ID = Menu.FIRST + 1;
 
    private int position;
    private int positionSet;
    Button bAdd;
    Button bDel;
    ListView lv;
 
    //пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
    public final  int lMainPage = R.layout.firstpage;
    public final int lItemText = MyCustomAdapter.lITEM_TEXT;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(lMainPage);
        mDbHelper = new DBworker(this);
        mDbHelper.open();
 
        lv = (ListView) findViewById(android.R.id.list);
 
        fillData();
        System.out.println(mDbHelper.db.getPath());
        registerForContextMenu(getListView());
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                onListItemClick((ListView) adapterView, view, i, l);
            }
        });
 
        bAdd = (Button) findViewById(R.id.bAdded);
        bDel = (Button) findViewById(R.id.bDeleted);
    }
 
    private void fillData(){
        mNotesCursor = mDbHelper.fetchAllNotes();
        startManagingCursor(mNotesCursor);
        String[] from = {DBworker.KEY_NAME};
        int[] to = {lItemText};
        CursorAdapter notes = new MyCustomAdapter(this, mNotesCursor);
        setListAdapter(notes);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu.add(0, INSERT_ID, 0, R.string.menu_insert);
        return true;
    }
 
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
            case INSERT_ID:
                onSet();
                return true;
        }
 
        return super.onMenuItemSelected(featureId, item);
    }
 
    private void onSet() {
        Intent i = new Intent(this, Item.class);
        startActivityForResult(i, ACTIVITY_CREATE);
    }
 
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, DELETE_ID, 0, R.string.menu_delete);
    }
 
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case DELETE_ID:
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
                mDbHelper.deleteNote(info.id);
                fillData();
                return true;
        }
        return super.onContextItemSelected(item);
    }
 
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent i = new Intent(this, Item.class);
        i.putExtra(DBworker.KEY_ID, id);
        startActivityForResult(i, ACTIVITY_EDIT);
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        fillData();
    }
 
    public void onClick(View v) {
       switch (v.getId()) {
           case R.id.bAdded:
               for(int i = 0; i<1000; i++) {
                   mDbHelper.onSetTemp(i+" name", "pull is -"+i);
               }
               onRequery();
               break;
           case R.id.bDeleted:
               break;
       }
    }
 
    public void onRequery() {
        CursorAdapter adapter = (CursorAdapter)getListView().getAdapter();
        adapter.getCursor().requery();
    }
}



class DBworker
Кликните здесь для просмотра всего текста
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.example.myapp;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DBworker {
    public static final String DB_NAME ="myDB";
    public static final String TABLE ="myDB";
    public static final String KEY_ID = "ID_GOODS";
    public static final String KEY_NAME = "NAME";
    public static final String KEY_PULL = "NOTE";
    public static final String KEY_CARDS = "FACT_NAME";
    private final Context mCtx;
 
    static ContentValues cvDataB;
    public SQLiteDatabase db;
    private DatabaseHelper mDbHelper;
 
        private static class DatabaseHelper extends SQLiteOpenHelper {
            private final String query = "create table " + TABLE + " ( "
                    + KEY_ID + " integer primary key autoincrement, "
                    + KEY_NAME + " text, "
                    + KEY_PULL + " text, "
                    + KEY_CARDS + " text"
                    + ");";
 
            private final String query1 = "CREATE TABLE myDB (ID_GOODS  INT,DB_GOODS    INT,ID_CITY INT,ID_ORG  INT,DB_ORG  INT,ID_CIPC INT,FIRST_ID    INT," +
                    "NAME   TEXT,NOTE   TEXT,EVAL_EXPR  TEXT,IS_IMP INT,FACT_SIZE   REAL,FACT_UNIT  INT,FACT_NAME   TEXT,IS_ADD INT,IS_CHANGE   INT," +
                    "IS_DEL INT,IS_ACTIVE   INT,DATE_FROM   NUM,DATE_TO NUM,DATE_CORR   NUM,REC_HASH    TEXT)";
 
            DatabaseHelper(Context context) {
                super(context, DB_NAME, null, 2);
            }
 
            @Override
            public void onCreate(SQLiteDatabase db) {
                try {
                    db.execSQL(query1);
                } catch (SQLiteException e) {
                    e.printStackTrace();
                }
            }
 
            @Override
            public void onUpgrade(SQLiteDatabase db, int i, int i1) {
                //db.execSQL("DROP TABLE IF EXISTS notes");
                //onCreate(db);
            }
        }
//    public static void onClear() {
//        String query = "delete from dbTemp;";
//        try {
//            db.execSQL(query);
//        } catch (SQLiteException e) {
//            e.printStackTrace();
//        }
//    }
        public DBworker(Context ctx) {this.mCtx = ctx;}
 
 
        public long onSetTemp(String name, String pull) {
            cvDataB = new ContentValues();
            cvDataB.put(KEY_NAME, name);
            cvDataB.put(KEY_PULL, pull);
            return db.insert(TABLE, null, cvDataB);
        }
 
    public boolean deleteNote(long rowId) {
 
        return db.delete(TABLE, KEY_ID + "=" + rowId, null) > 0;
    }
 
//    public static String[] onGetTemp(String column) {
//        ArrayList<String> arList = new ArrayList<String>();
//        String[] mStr = null;
//        c = db.query(TABLE, null, null, null, null, null, null);
//        if (c != null && (column.equals(KEY_NAME) || column.equals(KEY_PULL) || column.equals(KEY_CARDS))) {
//            if (c.moveToFirst()) {
//                do {
//                    String s = c.getString(c.getColumnIndex(column));
//                    arList.add(s);
//                } while (c.moveToNext());
//            }
//            c.close();
//            mStr = new String[arList.size()];
//            for(int i=0;i<arList.size();i++){
//                mStr[i]=arList.get(i);
//            }
//        }
//        return mStr;
//    }
 
        public Cursor fetchAllNotes() {
            //return db.query("dbTemp", new String[] {"pName", "pPull", "pCardPull"}, null, null, null, null, null);
            return db.rawQuery("select "+ KEY_ID + " as _id, * from " + TABLE, null);
        }
 
        public Cursor fetchNote(long rowId) throws SQLException {
 
            //Cursor mCursor =db.query(true, DB_NAME, new String[] {KEY_ID,KEY_NAME}, KEY_ID + "=" + rowId, null,null, null, null, null);
            Cursor mCursor = db.rawQuery("select "+ KEY_ID + " as _id, * from "+ TABLE +" where " + KEY_ID + " = " + rowId + " ", null);
            if (mCursor != null && mCursor.moveToFirst()) {
                mCursor.moveToFirst();
                byte[] bytes = mCursor.getBlob(0);
            }
            return mCursor;
 
        }
 
        public boolean updateNote(long rowId, String title, String body) {
            ContentValues args = new ContentValues();
            args.put(KEY_NAME, title);
            args.put(KEY_PULL, body);
 
            return db.update(TABLE, args, KEY_ID + "=" + rowId, null) > 0;
        }
 
        public DBworker open() throws SQLException {
            mDbHelper = new DatabaseHelper(mCtx);
            db = mDbHelper.getWritableDatabase();
            return this;
        }
 
        public void close() {
            mDbHelper.close();
        }
    }



class MyCustomAdapter
Кликните здесь для просмотра всего текста
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 com.example.myapp;
 
import android.content.Context;
import android.database.Cursor;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
 
public class MyCustomAdapter extends SimpleCursorAdapter implements AdapterView.OnItemClickListener {
 
    private Cursor cursor;
    private Context context;
 
    //Разметка
    public static int lLIST_ITEM = R.layout.reg_line;
    public static int lITEM_TEXT = R.id.priceDate; //дубляж убрать!!!!!!
    public static String[] str ={ DBworker.KEY_NAME };
    public static int[] init = {lITEM_TEXT};
 
    public MyCustomAdapter(Context context, int layout , Cursor c, String[] from, int[] to) {
        super(context, layout, c, from, to);
        this.cursor = c;
        this.context = context;
    }
 
    public MyCustomAdapter(Context context, Cursor cursor) {
        super(context, lLIST_ITEM, cursor, str, init);
        this.cursor = cursor;
        this.context = context;
    }
 
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
       Toast.makeText(context, "проверка", Toast.LENGTH_SHORT).show();
    }
 
    // Класс для сохранения во внешний класс и для ограничения доступа
    private static class ViewHolder {
        public long rowid;
        public TextView dateP;
        public TextView date;
        public TextView percent;
        public EditText name;
        public EditText fName;
        public EditText fNameP;
        public EditText price;
        public EditText priceP;
        public EditText fPrice;
        public EditText fPriceP;
        public Button bCopy;
        public ToggleButton bMiss;
    }
    //
 
    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        long t1 = System.currentTimeMillis();
        final ViewHolder holder;
        View rowView = convertView;
 
        if (rowView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(lLIST_ITEM, null, true);
            holder = new ViewHolder();
            holder.date = (TextView) rowView.findViewById(R.id.priceDate);
            //holder.dateP = (TextView) rowView.findViewById(R.id.pricePDate);
            //holder.percent = (TextView) rowView.findViewById(R.id.pricePercent);//priceGoodsName
            holder.fNameP = (EditText) rowView.findViewById(R.id.pricePFactName);
            holder.priceP = (EditText) rowView.findViewById(R.id.pricePPrice);
            holder.fPriceP = (EditText) rowView.findViewById(R.id.pricePFPrice);
            holder.fName = (EditText) rowView.findViewById(R.id.priceFName);
            holder.price = (EditText) rowView.findViewById(R.id.pricePrice);
            holder.fPrice = (EditText) rowView.findViewById(R.id.priceFPrice);
            holder.name = (EditText) rowView.findViewById(R.id.priceGoodsName);
            holder.bCopy = (Button) rowView.findViewById(R.id.priceBCopy);
            holder.bMiss = (ToggleButton) rowView.findViewById(R.id.priceBMiss);
            rowView.setTag(holder);
        }else{
            holder = (ViewHolder) rowView.getTag();
        }
 
        //что куда
        holder.name.setText("");//NAME
        //holder.dateP.setText("");//DATE_FROM
        holder.date.setText("");//DATE_TO
        holder.fName.setText("");//FACT_NAME
        holder.fNameP.setText("");//
        //holder.percent.setText("");//
        holder.priceP.setText("");//ID_CIPC
        holder.fPriceP.setText("");//FIRST_ID
        holder.price.setText("");//
        holder.fPrice.setText("");//ID_CIPC + FIRST_ID
        cursor.moveToPosition(pos);
 
        holder.date.setText(cursor.getString(cursor.getColumnIndex(DBworker.KEY_NAME)));
        holder.fNameP.setText(cursor.getString(cursor.getColumnIndex(DBworker.KEY_PULL)));//
        holder.name.setText(cursor.getString(cursor.getColumnIndex("NAME")));//NAME
        //holder.dateP.setText(cursor.getString(cursor.getColumnIndex("DATE_FROM")));//DATE_FROM
        holder.date.setText(cursor.getString(cursor.getColumnIndex("DATE_TO")));//DATE_TO
        holder.fName.setText(cursor.getString(cursor.getColumnIndex("FACT_NAME")));//FACT_NAME
        holder.priceP.setText(cursor.getString(cursor.getColumnIndex("ID_CIPC")));//ID_CIPC
        holder.fPriceP.setText(cursor.getString(cursor.getColumnIndex("FIRST_ID")));//FIRST_ID
        holder.fPrice.setText(cursor.getString(cursor.getColumnIndex("ID_CIPC")+cursor.getColumnIndex("FIRST_ID")));//ID_CIPC + FIRST_ID
 
        holder.rowid = cursor.getLong(cursor.getColumnIndex("ID_GOODS"));
 
        long t2 = System.currentTimeMillis();
        long dt = t2-t1;
        if(dt>10){
            Log.i("QuickAdapter", "------------" + dt + "------------");
        }
        return rowView;
    }
 
}
0
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
05.08.2015, 19:15  [ТС] #7
Закрывайте
Ответ: http://**********************/question...t461889_439718
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
06.08.2015, 08:28 #8
Где там правильный ответ?

Но, похоже, это уже вопрос в пустоту...
0
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
06.08.2015, 16:19  [ТС] #9
Ответ был в 2 пункта:
1) Я повесил лишний слушатель по ошибке...
Java
1
2
3
4
5
6
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                onListItemClick((ListView) adapterView, view, i, l);
            }
        });
2) Из-за большого количества элементов в разметке, фокус перехватывался и нажатие на элемент списка не обрабатывалось... я просто выставил во всех элементах android:focusable="false"
0
PaDyra
32 / 32 / 8
Регистрация: 06.01.2012
Сообщений: 142
07.08.2015, 09:57 #10
В Адаптере у вас тоже есть один обработчик, если что)

Java
1
2
3
4
@Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
       Toast.makeText(context, "проверка", Toast.LENGTH_SHORT).show();
    }
0
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
07.08.2015, 16:16  [ТС] #11
Да, но он не препятствует сейчас срабатыванию onListItemClick, возможно я его уберу, т.к. он был введен только для тестов
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2015, 16:16
Привет! Вот еще темы с ответами:

Не могу разобраться, почему элемент должен добавляться в начало списка, а добавляется как второй элемент - Delphi
uses SysUtils,windows; type List=^Ukasatel; Ukasatel = record el:integer; next:List end; Var L,p:List;...

Нужно отобразить данные из PostgreSQL на веб-странице в виде списка, используя элемент ListView - C# ASP.NET
Использование ListView Такая проблема: Нужно отобразить данные из PostgreSQL на веб-странице в виде списка, оспользуя элемент ...

Выполнить запрос к БД при нажатии на элемент в ListView и заполнить данными другой ListView - C++ Builder БД
Подскажите пожалуйста как сделать в RadStudio, что бы при нажатии на одну строку выполнялся запрос в БД, и результат записывался в чистый...

Нажатие на ListView - Программирование
Добрый день, уважаемые форумчане. В моем приложении элементы списка ListView генерируются программно. Я хочу, чтобы при нажатии на элемент...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.08.2015, 16:16
Ответ Создать тему
Опции темы

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