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

Вставить фрагмент после определённого эленета в RecyclerView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android ArrayList contains object http://www.cyberforum.ru/android-dev/thread1711516.html
Мое приложение добавляет избранные игры в список. Мне нужно выводить сообщения о том, что список содержит определенные приложения, как это я делаю ниже, но почему-то это сообщения никогда не...
Программирование Android Genymotion Unable to create Virtual Device Всем хорошего дня! Пробую поставить Genymotion, для того чтобы эмулятор был шустрее. Зарегистрировался на сайте, скачал версию бесплатную, запустилось, но при попытке добавить новое виртуальное... http://www.cyberforum.ru/android-dev/thread1711484.html
Сервис для телефонной книги Программирование Android
Доброго времени суток! Подскажите пожалуйста, как в Android можно поднять свой сервис для синхронизации туда контактов в телефонную книгу? Как какой-нибудь ВКонтакте или Telegram делает. Заранее...
Получить HTML код страницы Программирование Android
Здравствуйте, подскажите. Реально ли стать промежуточным звеном в отображении контента в webView. Т.е при переходе по URL получить код страницы - отпарсить его а тогда отобразить ?
Программирование Android может кто подскажет что делать http://www.cyberforum.ru/android-dev/thread1711125.html
Android приложение, в котором нужно построить график. Для этого я получаю с помощью AsyncTask(парсинг XML) значения типа String, но мне их нужно преобразовать в Double. Использую статический метод...
Программирование Android Java.lang.NumberFormatException: Invalid double Android приложение, в котором нужно построить график. Для этого я получаю с помощью AsyncTask(парсинг XML) значения типа String, но мне их нужно преобразовать в Double. Использую статический метод... подробнее

Показать сообщение отдельно
Axellly
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 16

Вставить фрагмент после определённого эленета в RecyclerView - Программирование Android

14.04.2016, 16:53. Просмотров 350. Ответов 4
Метки (Все метки)

Привет киберфорум, имеется ситуация: RecyclerView, для которого есть адаптер, подгружающий внутрь CardView с данными из бд(sqlite). Имеется реализованный обработчик через интерфейс, разумеется на уровне ViewHolder'а считываются клики, и вот теперь ситуация: по клику необходимо приатачить вьюшку относительно кликнутого элемента. Казалось бы, просто, обработчик имеет следующий вид:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
            @Override
            public void onItemClick(View view, int position) {
                transaction = manager.beginTransaction();
                if (manager.findFragmentById(R.id.v1)==null)
                {
                    Log.d(TAG,"clicked on "+position+" item");
                    transaction.add(R.id.v1, fragment);
                }
                else
                {
                    transaction.remove(fragment);
                }
                transaction.commit();
            }
        });
Есть интовая позиция, которая корректно считается(проверено логом), но вот как сделать именно добавление элемента после кликнутой ячейки? Каждый элемент(viewHolder) имеет в себе вьюшку v1, и в данном виде код присоединяет фрагмент просто к верхнему элементу, видимому на экране (я думаю это просто потому что он первый встретившийся элемент находит с нужным айдишником и после прекращает работу). Как сделать добавление фрагмента, связанное непосредственно с position? Что бы добавлялся мой фрагмент ровно после того элемента, на который было нажатие.

Варианты типа add вдруг имеет подходящую перегрузку проверенны, разумеется.
Так же прикрепляю реализацию адаптера в спойлере.
Кликните здесь для просмотра всего текста
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
package com.axel.renotes;
 
import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;
 
 
/**
 * Created by Александр on 08.04.2016.
 */
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.CustomViewHolder> {
 
    private Context mContext;
    public CursorAdapter mCursorAdapter;
    OnItemClickListener mItemClickListener;
 
    public MyRecyclerAdapter(Context context, Cursor cursor) {
        mContext = context;
 
        mCursorAdapter = new CursorAdapter(mContext, cursor, 0) {
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup parent) {
                View view = LayoutInflater.from(context).inflate(R.layout.view_list_item, null);
                return view;
            }
 
            @Override
            public void bindView(View view, Context context, Cursor cursor) {
                TextView text = (TextView)view.findViewById(R.id.textViewListItem);
                text.setText(cursor.getString(1));
            }
        };
    }
 
    @Override
    public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
 
        View v = mCursorAdapter.newView(mContext, mCursorAdapter.getCursor(), viewGroup);
        return new CustomViewHolder(v);
    }
 
    @Override
    public void onBindViewHolder(CustomViewHolder holder, int i) {
 
        mCursorAdapter.getCursor().moveToPosition(i);
        mCursorAdapter.bindView(holder.itemView, mContext, mCursorAdapter.getCursor());
    }
 
    @Override
    public int getItemCount() {
        return mCursorAdapter.getCount();
    }
 
    //реализация холдера
    public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        View v1;
        public CustomViewHolder(View view) {
            super(view);
            v1 = view.findViewById(R.id.v1);
            view.setOnClickListener(this);
        }
 
        @Override
        public void onClick(View v) {
            if (mItemClickListener != null) {
                mItemClickListener.onItemClick(v, getLayoutPosition());
            }
        }
    }
    public interface OnItemClickListener {
        void onItemClick(View view , int position);
    }
    public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) {
        this.mItemClickListener = mItemClickListener;
    }
}

Ну а обработчик в данной реализации требует переопреления и происходит это в MainActivity, код привёл выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru