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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Делаю удаленную базу Android-Php-MySql http://www.cyberforum.ru/android-dev/thread1503915.html
Здравствуйте! Я нашел эти кода из уроков devcolibri.com db_connect.php <?php class DB_CONNECT { function __construct() { $this->connect(); }
Программирование Android .net под андройд А кто-нибудь на .net под андройд программирует? А то у меня больше опыта по .net чем по Java. Стоит ли связываться вообще с .net под Android? Можно ли потом реальный проект найти под это дело? http://www.cyberforum.ru/android-dev/thread1503839.html
Программирование Android TextView а AlertDialog
Здравствуйте! Вот столкнулся с такой проблемой, не могу Textview вывести в AlertDialog. Помогите пожалуйста!
Программирование Android Кнопка Android studio
Привет. Есть кнопка <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Next" android:id="@+id/button1" android:onClick="onClick" android:layout_below="@+id/editText3" android:layout_alignParentLeft="true"
Программирование Android Простой будильник http://www.cyberforum.ru/android-dev/thread1503780.html
Здравствуйте,форумчане! Возникла необходимость в написании приложения "будильник" в срочном порядке. Мои знания ПОКА,увы, не дают мне такой возможности. Искала исходные коды-безуспешно. Если кто сможет помочь-буду очень признательна!
Программирование Android В созданном браузере при нажатии кнопки "Назад" выходит из приложения Всем привет! Недавно начал изучать как разрабатывать приложения под Android. Хочу написать браузер для Android специально для одного сайта, без адресной строки. Все вроде бы сделал, но при нажатии кнопки "Назад", приложение закрывается, а нужно, чтобы переходило на предыдущую страницу. Что делать? Как выйти из ситуации? activity_main.xml <RelativeLayout подробнее

Показать сообщение отдельно
Raus
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 6
03.08.2015, 10:26  [ТС]
Вот у меня есть список, каждый элемент имеет сложную разметку. Если разметка состоит из простого элемента 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;
    }
 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru