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

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

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

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

23.07.2015, 17:47. Просмотров 830. Ответов 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>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 17:47     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView
Посмотрите здесь:

Android Длинное нажатие на ListView
Android Как в ListView обработать нажатие кнопки и изменить здесь же значение в textView ?
Как заставить ListView показывать ограниченное количество элементов? Android
Android Как заставить LisView забивать элементы в начало списка?
Нажатие на элементы ListView Android
Android Получить id вместо position в OnItemClickListener
Получить из ListView адаптера значение в OnItemClickListener Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
26.07.2015, 18:35     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #2
android:editable="false"

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

Добавлено через 21 секунду
код где полностью
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
03.08.2015, 10:26  [ТС]     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #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;
    }
 
}
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
05.08.2015, 19:15  [ТС]     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #7
Закрывайте
Ответ: http://**********************/question...t461889_439718
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
06.08.2015, 08:28     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #8
Где там правильный ответ?

Но, похоже, это уже вопрос в пустоту...
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
06.08.2015, 16:19  [ТС]     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #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"
PaDyra
32 / 32 / 8
Регистрация: 06.01.2012
Сообщений: 142
07.08.2015, 09:57     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #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();
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2015, 16:16     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView
Еще ссылки по теме:

Android OnItemClickListener
В ListView не работает OnItemClickListener Android
Элемент списка listView и БД SQLlite Android
Как считать нажатие на одно из полей в ListView? Android
Как обработать нажатие на изображение в элементе listView? Android

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

Или воспользуйтесь поиском по форуму:
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
07.08.2015, 16:16  [ТС]     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView #11
Да, но он не препятствует сейчас срабатыванию onListItemClick, возможно я его уберу, т.к. он был введен только для тестов
Yandex
Объявления
07.08.2015, 16:16     Не могу заставить OnItemClickListener, ловить нажатие на элемент списка ListView
Ответ Создать тему
Опции темы

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