Skocz do zawartości
woligmeat

Pobranie ID wiersza z bazy SQL

    Rekomendowane odpowiedzi

    @mmaciejow A żeby to wstawić do Expandable list to co trzeba zrobic? Stworzyć adapter? Wystarczy że mnie pokierujesz bo chciałbym sam zrozumieć wszystko. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    @woligmeat tak musisz stworzyć adapter. Podobnie robi się jak recyclerview. Masz tylko inne metody. 

    • Piwko! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Witam @mmaciejow
    Dziękuję ci za pomoc, ale jeszcze mam problem.
    Mianowicie stworzyłem TreeView z gotowych bibliotek i tak samo jak poprzednio chciałbym uzyskać ID z bazy danych po kliknięciu w ten element.

    Jeżeli trzeba to podeśle mój projekt.

    Edytowane przez woligmeat

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    @woligmeat wielkiego znaczenia nie ma jaki dasz layout zasada zostaje ta sama wyciągasz id danego elementu i dopasowujesz go do bazy. 

    Jak ma działać ta aplikacja? Może zbytnio kombinujesz. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Ogólnie to ma być tak, że gdy klikam w element to się rozwija, i potem dalej gdy kliknę w ten rozwinięty to też się rozwija, i tak w nieskończoność.

    Zrobiłem już żeby się ta "lista" wczytywała z bazy danych i żeby można było dodać do bazy. 

    Teraz chciałbym żeby obok tego elementu był przycisk usuń i żeby usuwało ten element po id z bazy danych. 

     

    W załączniku daje ci to co zrobiłem już. Jakbyś mógł zerknąć i powiedzieć tylko co robie źle i co powinienem poprawić. Nie chcę żebys za mnie tego zrobił. Chciałbym tylko żebyś wytłumaczył co powinienem zrobić. Uczę się dopiero i chciałbym zrozumieć jak najwięcej.

    todolistnow.zip

    Edytowane przez woligmeat

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Zobacz w wolnej chwili. Co do przycisku usuń to tak samo musisz wysłać zapytanie do bazy z poleceniem "DELETE". Przycisk możesz dodać za pomocą RecyclerView - dodajesz nowe pole + layout. Pobierasz id i wysyłasz zapytanie i po sprawie. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    @woligmeat tak na szybko:

    Po pierwszym skompilowaniu aplikacja wywala błąd na linii: 

    parenta[0].addChildren(child);

    Jeżeli zakomentuje  to idzie, potem można to odkomentować i skompilować ponownie i nie rzuca błędem. W tym miejscu powinieneś zrobić warunek lub coś innego wykonać. Też nie działa dodawanie dzieci do rodzica zadań. 

    Gdy dodaje rekord pojawia mi się na chwilę ekran czarny - lepiej zrobić jakieś kółeczko kręcące się gdy dodaje do bazy. 

    Klasa User do poprawy - powinny być pola prywatne + gettery i settery. W moim przykładzie tak jest jak Ty masz, ale napisałem, że nie powinno tak się tego robić. Skróciłem to na potrzeby przykładu. 

    Cursor dodaj do try/catch itd. zobacz mój przykład. Uzupełniłem o to. 

    Zobacz to:

    https://github.com/bmelnychuk/AndroidTreeView

    Myślę, że to jest bardziej funkcjonalne niż to co zrobiłeś i spełnia chyba Twoje oczekiwania. 

    Zrób tak jak w przykładzie z bazą, kasują ją za każdym razem gdy jest odpalana appka, wtedy będziesz miał pewność, że na początku nic Ci sie nie posypie. A potem tą funkcje usuń. 

    Edytowane przez mmaciejow
    • Piwko! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @mmaciejow  Dzięki za porady :)

    Zrobiłem to: - ale gdy kliknę na element to wtedy pojawia się wszędzie ID: 0 . Gdy dam samo position to wtedy pokazuje się normalnie ID: 0     ID: 1   itd...
    Co dalej powinienem?

    package tellh.com.recyclertreeview.viewbinder;
    
    import android.media.Image;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    
    import tellh.com.recyclertreeview.MainActivity;
    import tellh.com.recyclertreeview.R;
    import tellh.com.recyclertreeview.bean.Dir;
    import tellh.com.recyclertreeview_lib.TreeNode;
    import tellh.com.recyclertreeview_lib.TreeViewAdapter;
    import tellh.com.recyclertreeview_lib.TreeViewBinder;
    
    /**
     * Created by tlh on 2016/10/1 :)
     */
    
    public class DirectoryNodeBinder extends TreeViewBinder<DirectoryNodeBinder.ViewHolder> {
        private ArrayList<TreeNode> mUsers;
        private RecyclerView rv;
    
        public DirectoryNodeBinder(ArrayList<TreeNode> mUsers,RecyclerView rv) {
            this.mUsers = mUsers;
            this.rv = rv;
        }
    
        @Override
        public ViewHolder provideViewHolder(View itemView) {
            return new ViewHolder(itemView);
        }
    
        @Override
        public void bindView(ViewHolder holder, final int position, TreeNode node) {
            holder.ivArrow.setRotation(0);
            holder.ivArrow.setImageResource(R.drawable.ic_keyboard_arrow_right_black_18dp);
            int rotateDegree = node.isExpand() ? 90 : 0;
            holder.ivArrow.setRotation(rotateDegree);
            Dir dirNode = (Dir) node.getContent();
            holder.tvName.setText(dirNode.dirName);
            if (node.isLeaf())
                holder.ivArrow.setVisibility(View.INVISIBLE);
            else holder.ivArrow.setVisibility(View.VISIBLE);
    
    
            addSubTask(holder, position, node);
        }
    
        private void addSubTask(ViewHolder holder, final int position, TreeNode node) {
            holder.addSubTaskImageButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int iduser = mUsers.get(position).id;
                    
                  Toast.makeText(view.getContext(), "ID: " + iduser, Toast.LENGTH_SHORT).show();
                  
                }
            });
        }
    
        @Override
        public int getLayoutId() {
            return R.layout.item_dir;
        }
    
        public static class ViewHolder extends TreeViewBinder.ViewHolder {
            private ImageView ivArrow;
            private TextView tvName;
            private ImageButton addSubTaskImageButton;
    
            public ViewHolder(View rootView) {
                super(rootView);
                this.ivArrow = (ImageView) rootView.findViewById(R.id.iv_arrow);
                this.tvName = (TextView) rootView.findViewById(R.id.tv_name);
                this.addSubTaskImageButton = (ImageButton) rootView.findViewById(R.id.addSubTaskImageButton);
    
            }
    
            public ImageView getIvArrow() {
                return ivArrow;
            }
    
            public TextView getTvName() {
                return tvName;
            }
    
            public ImageButton getAddSubTaskImageButton() {
                return addSubTaskImageButton;
            }
        }
    
    
    }

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Pamiętaj lista zaczyna się od id 0, a baza od id 1. Gdy pobierasz z bazy danych musisz zrobić +1 dla elementu pobranego z listy. Tak jak to wyjaśniałem w przykładzie.

    Zobacz ta bibliotekę, którą podałem wydaje się ciekawa pod względem implementacji niż tą co Ty dodałeś do projektu.   

    • Piwko! 2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x