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

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

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

Получить текст из одного TextView в кастомном ListView - Программирование Android

19.01.2015, 15:42. Просмотров 602. Ответов 3
Метки нет (Все метки)

Есть кастомный ListView, в котором есть картинка и два TextView, как при нажатии на элемент этого списка получить текст допустим второго TextView?


вот код класса:
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
public class MainActivity extends ActionBarActivity
 
    SimpleCursorAdapter mAdapter;
    MatrixCursor mMatrixCursor;
    ListView lstContacts;
    TextView tv_details;
    private String[] mScreenTitles;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
 
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        tv_details = (TextView) findViewById(R.id.tv_details);
        mMatrixCursor = new MatrixCursor(new String[] { "_id","name","photo","details"} );
        mAdapter = new SimpleCursorAdapter(getBaseContext(),
                R.layout.layout,
                null,
                new String[] { "name","photo","details"},
                new int[] { R.id.tv_name,R.id.iv_photo,R.id.tv_details}, 0);
         lstContacts = (ListView) findViewById(R.id.lst_contacts);
        lstContacts.setAdapter(mAdapter);
        ListViewContactsLoader listViewContactsLoader = new ListViewContactsLoader();
        listViewContactsLoader.execute();
 
        mTitle = mDrawerTitle = getTitle();
        mScreenTitles = getResources().getStringArray(R.array.screen_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
 
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mScreenTitles));
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
 
        mDrawerToggle = new ActionBarDrawerToggle(
                this, /* host Activity */
                mDrawerLayout, /* DrawerLayout object */
                R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open, /* "open drawer" description */
                R.string.drawer_close /* "close drawer" description */
        ) {
 
            public void onDrawerClosed(View view) {
                getSupportActionBar().setTitle(mTitle);
                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
 
            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };
 
        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);
 
        // Initialize the first fragment when the application first loads.
        if (savedInstanceState == null) {
            selectItem(0);
        }
 
 
 
    }
 
 
    private class ListViewContactsLoader extends AsyncTask<Void, Void, Cursor> {
 
        @Override
        protected Cursor doInBackground(Void... params) {
            Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
 
            Cursor contactsCursor = getContentResolver().query(contactsUri, null, null, null,
                    ContactsContract.Contacts.DISPLAY_NAME + " ASC ");
 
            if(contactsCursor.moveToFirst()){
                do{
                    long contactId = contactsCursor.getLong(contactsCursor.getColumnIndex("_ID"));
 
                    Uri dataUri = ContactsContract.Data.CONTENT_URI;
 
                    Cursor dataCursor = getContentResolver().query(dataUri, null,
                            ContactsContract.Data.CONTACT_ID + "=" + contactId,
                            null, null);
 
                    String displayName="";
                    String nickName="";
                    String homePhone="";
                    String mobilePhone="";
                    String workPhone="";
                    String photoPath="" + R.drawable.blank;
                    byte[] photoByte=null;
                    String homeEmail="";
                    String workEmail="";
                    String companyName="";
                    String title="";
 
                    if(dataCursor.moveToFirst()){
                        // Getting Display Name
                        displayName = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME ));
                        do{
 
                            // Getting NickName
                            if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE))
                                nickName = dataCursor.getString(dataCursor.getColumnIndex("data1"));
 
                            // Getting Phone numbers
                            if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){
                                switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){
                                    case ContactsContract.CommonDataKinds.Phone.TYPE_HOME :
                                        homePhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                        break;
                                    case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE :
                                        mobilePhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                        break;
                                    case ContactsContract.CommonDataKinds.Phone.TYPE_WORK :
                                        workPhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                        break;
                                }
                            }
 
                            // Getting EMails
                            if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE ) ) {
                                switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){
                                    case ContactsContract.CommonDataKinds.Email.TYPE_HOME :
                                        homeEmail = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                        break;
                                    case ContactsContract.CommonDataKinds.Email.TYPE_WORK :
                                        workEmail = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                        break;
                                }
                            }
 
                            // Getting Organization details
                            if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)){
                                companyName = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                                title = dataCursor.getString(dataCursor.getColumnIndex("data4"));
                            }
 
                            // Getting Photo
                            if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){
                                photoByte = dataCursor.getBlob(dataCursor.getColumnIndex("data15"));
 
                                if(photoByte != null) {
                                    Bitmap bitmap = BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length);
 
                                    // Getting Caching directory
                                    File cacheDirectory = getBaseContext().getCacheDir();
 
                                    // Temporary file to store the contact image
                                    File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"+contactId+".png");
 
                                    // The FileOutputStream to the temporary file
                                    try {
                                        FileOutputStream fOutStream = new FileOutputStream(tmpFile);
 
                                        // Writing the bitmap to the temporary file as png file
                                        bitmap.compress(Bitmap.CompressFormat.PNG,100, fOutStream);
 
                                        // Flush the FileOutputStream
                                        fOutStream.flush();
 
                                        //Close the FileOutputStream
                                        fOutStream.close();
 
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    photoPath = tmpFile.getPath();
                                }
                            }
                        }while(dataCursor.moveToNext());
                        String details = "";
 
                        // Concatenating various information to single string
 
                        if(mobilePhone != null && !mobilePhone.equals("") )
                            details += mobilePhone + "\n";
 
 
                        // Adding id, display name, path to photo and other details to cursor
                        mMatrixCursor.addRow(new Object[]{ Long.toString(contactId),displayName,photoPath,details});
                    }
                }while(contactsCursor.moveToNext());
            }
 
 
            lstContacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    try {
                        Uri uri = Uri.parse("tel:" + tv_details.getText().toString());
                        startActivity(new Intent(Intent.ACTION_CALL, uri));
                    } catch (Exception e) {
                        Toast.makeText(getApplication(), tv_details.getText().toString(), Toast.LENGTH_LONG).show();
                    }
                }
            });
 
 
 
            return mMatrixCursor;
        }
 
        @Override
        protected void onPostExecute(Cursor result) {
            // Setting the cursor containing contacts to listview
            mAdapter.swapCursor(result);
        }
    }
 
 
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu;
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }
 
    /* Called whenever we call invalidateOptionsMenu() */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // If the nav drawer is open, hide action items related to the content view
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_search).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action buttons
        switch(item.getItemId()) {
            case R.id.action_search:
                // Show toast about click.
                Toast.makeText(this, R.string.action_search, Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
 
    /* The click listener for ListView in the navigation drawer */
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
 
        }
    }
 
 
 
 
 
  
 
    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getSupportActionBar().setTitle(mTitle);
    }
 
   
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }
 
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggles
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
 
 
 
}
вот сам xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->
    
    <ListView
    android:id="@+id/lst_contacts"
    android:layout_width="240dp"
    android:layout_height="match_parent"
        android:layout_gravity="end"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#ffffffff"/>
</android.support.v4.widget.DrawerLayout>
вот сам TextView
XML
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
 
    <ImageView
        android:id="@+id/iv_photo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
 
        android:layout_centerHorizontal="true"
        android:padding="5dp" />
 
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="20dp"
        android:textStyle="bold" />
 
    <TextView
        android:id="@+id/tv_details"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2015, 15:42     Получить текст из одного TextView в кастомном ListView
Посмотрите здесь:

Получить доступ к TextView внутри ListView - Программирование Android
Привет, форумчане! Сначала кратко(потребуется код выложу, просто нужно понять принцип): Есть Активити на базе ЛистАктивити, в ней ЛистВью...

Получить количество строк в TextView (ListView) - Программирование Android
привет всем. уже очень давно никак не могу получить количество строк в TextView который находится в ListView. каждый итем - TextView. ...

SetBackgroundColor в кастомном ListView - Программирование Android
В кастомном ListView подсвечиваю строки через setBackgroundColor() или &quot;android:background&quot; Если нажимаю на обычную строку, то она...

OnClickListner на кастомном listview - Программирование Android
Здравствуйте такой вопрос есть кастомный список его код: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;RelativeLayout...

Поиск по ListView основанному на кастомном адаптере - Программирование Android
Есть кастомный адаптер. ListView сделан на его основе. Данные загружаются из БД. Делаю поиск по позициям листа. Дописал в класс кастомного...

Получить текст из ListView - Программирование Android
Всем привет, возникла такая необходимость получить текст из listview.Помогите пожалуста

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.01.2015, 16:26     Получить текст из одного TextView в кастомном ListView #2
Ни;%я себе сказала я себе...

Т.е. вы написали всё вот то, что вверху и нигде у вас не возникло даже малейшего вопроса.
Но
как получить текст допустим второго TextView
наглухо прибило дальнейшее развитие вашего проекта?
HiggsMan
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 9
19.01.2015, 16:36  [ТС]     Получить текст из одного TextView в кастомном ListView #3
код частично мой, поэтому и застрял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2015, 16:41     Получить текст из одного TextView в кастомном ListView
Еще ссылки по теме:

Получить индекс элемента в кастомном списке - Программирование Android
Добрый день. У меня имеется кастмоный список, состоящий из двух и более элементов. Например, я кликнул по 2 элементу списка, длина которого...

TextView в элементе ListView - Программирование Android
Имеется ListView, у него как положена имеется кастомный адаптер с довольно усложненной логикой. При нажатии на одном из пунктов содержимое...

Смена TextView в ListView - Программирование Android
Суть: есть каталог товаров, список заполняется через ListView из базы.. с этим все в порядке, но есть задача следующего характера: у нас...

ListView с несколькими TextView - Программирование Android
Как сделать более одного TextView в одном элементе ListView, и как к ним обращаться ?

Передать из строки ListView в 2 поля TextView? - Программирование Android
Добрый всем! Добавлено через 8 минут есть ListView в нем добавлены/добавляются из полей TextView данные (Name и Email) а так же...

TextView и ListView с единой прокруткой ScrollView(?) - Программирование Android
Всем привет, столкнулся с проблемой при одновременном отображении ListView и TextView . Не получается отобразить эти 2 блока как единый...


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

Или воспользуйтесь поиском по форуму:
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
19.01.2015, 16:41     Получить текст из одного TextView в кастомном ListView #4
Armagedo,

Не по теме:

очень похоже на копипаст)


HiggsMan, Не знаю как с курсор адаптером подобное провернуть, обычно использую кастомный унаследованный от BaseAdapter, там просто - делаете кастомную вьюшку, добавляете в нее метод getSecondText(), в котором возвращаете secondTextView.getText(). Либо можно с этим же адаптером попробовать: вешать на нужный TextView тег при создании, потом в методе ListView onItemClicked() находите все вложенные в нажатый элемент вьюшки и каждую по очереди проверяете содержит ли она тот тег который вы назначали. А дальше уже работаете с ней как с обычным TextView.
Yandex
Объявления
19.01.2015, 16:41     Получить текст из одного TextView в кастомном ListView
Ответ Создать тему
Опции темы

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