Android studio RecyclerView Ошибка не отображается ничего (получил коммит 22 часа go, который работает отлично) - PullRequest
0 голосов
/ 13 января 2020

Я сделал что-то, что разрушило мой проект. Это сработало на моем последнем коммите 22 часа go. Я использую recylerview для получения данных от вошедшего в систему пользователя. Я даже не вижу, что recylerview уже на моей странице. Как я могу вернуться к своему последнему коммиту в студии android, который я сделал за 22 часа go. Я перепробовал все, чего я не понимаю. Сегодня я даже не коснулся этой активности, но через 2 часа go она перестала работать.

Единственное, что я сделал, - это рефакторинг представления с именем custom_layout, используемого для редактирования заметок, но я обратил внимание, что впоследствии, возможно, что-то где-то было сохранено и вызывает ошибку вот картинка моего взгляда: CLick here to see my view

enter code here  (MODEL)
package com.example.examapplikation.Models;

public class NotesList {

    private String title;
    private String text;

    public NotesList(){

    }
    public NotesList(String title, String text){

        this.title=title;
        this.text= text;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
}

ПРОСМОТР! enter code here пакет com.example.examapplikation.ViewHolder;

public  class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {

    public TextView text_title, text_content;

    public NoteViewHolder(@NonNull View itemView){

        super (itemView);

        text_title = itemView.findViewById(R.id.text_title);
        text_content = itemView.findViewById(R.id.text_content);

        itemView.setOnCreateContextMenuListener(this); // context to this view


    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { // on clik update delete on every object

   // menu.setHeaderTitle("Select desired option");
    menu.add(0,0,getAdapterPosition(),"Edit Note");
    menu.add(0,0,getAdapterPosition(),"Delete Note");

    }
}

MAINACTIVITY введите код здесь

пакет com.example.examapplikation;

public class HomeActivity extends AppCompatActivity {

    private RecyclerView recyclerView; 
    private FloatingActionButton addNotePageButton;
    private FirebaseAuth firebaseAuth;
    FirebaseDatabase database;
    DatabaseReference notesDb;
    FirebaseRecyclerOptions<NotesList> options;
    FirebaseRecyclerAdapter<NotesList, NoteViewHolder> adapter; // adapter

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);

            //iniate
            viewSetUp();

            // refrense
            notesDb = database.getReference("NoteList").child(firebaseAuth.getCurrentUser().getUid());
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager( new LinearLayoutManager(this) );
            showEachRow(); // call function

            // buton to add note
            addNotePageButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(HomeActivity.this, NoteInputActivity.class);
                    startActivity(intent);
                }
        });
    }


    //Region -used for edit and delete this section start reads whats in the post and open ups a window on the same window based on the  Viewholder and a xml file called custom_layout
     // recycler view in this section and only the verifed logged in user can See his own data!
    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }

    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) { // viewholder

       if (item.getTitle().equals("Edit Note")){
           showUpdateDialog(adapter.getRef(item.getOrder()).getKey(),adapter.getItem(item.getOrder()));
       } else if (item.getTitle().equals("Delete Note")){
           deleteNote(adapter.getRef(item.getOrder()).getKey());
       }

        return super.onContextItemSelected(item);
    }

    private void deleteNote(String adapter) { // delete

        notesDb.child(adapter).removeValue();
    }

    private void showUpdateDialog(final String key, NotesList item) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("[ Note Edit Mode]");
        builder.setMessage("Please update the desired fields");

        View update_layout = LayoutInflater.from(this).inflate(R.layout.custom_layout,null); // view model layou

        final EditText changed_title = update_layout.findViewById(R.id.edit_update_title);
        final EditText changed_content = update_layout.findViewById(R.id.edit_update_text);

        changed_title.setText(item.getTitle()); // get value to new
        changed_content.setText(item.getText());
        builder.setView(update_layout);
        builder.setPositiveButton("Save changes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                String title = changed_title.getText().toString();
                String content = changed_content.getText().toString();

                NotesList notesList = new NotesList(title,content);
                notesDb.child(key).setValue(notesList);

                Toast.makeText(HomeActivity.this,"Note Updated", Toast.LENGTH_SHORT).show();

            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();

            }
        });
            builder.show();
    }
    //# EndRegion

    // Region to read data from dataBase using  Viewholder and model Notes and  a xml file called note_each_row + the home xml file.
    private void showEachRow(){ // recycler view
       options = new FirebaseRecyclerOptions.Builder<NotesList>()
               .setQuery(notesDb,NotesList.class)
               .build();

       adapter = new FirebaseRecyclerAdapter<NotesList, NoteViewHolder>(options) { // noteViewModel to model to get
           @Override
           protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull NotesList model) {
               holder.text_title.setText(model.getTitle());
               holder.text_content.setText(model.getText());
           }

           @NonNull
           @Override
           public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

               View itemView  = LayoutInflater.from(viewGroup.getContext())
                       .inflate(R.layout.notes_each_row,viewGroup,false); // inflate the rows

               return new NoteViewHolder(itemView);
           }
       };

       recyclerView.setAdapter(adapter);

        }
    //# end Region

//#start region initate to xml
    private void viewSetUp(){
        recyclerView = findViewById(R.id.recyclerView);
        addNotePageButton = findViewById(R.id.fab_button_addPage);
        firebaseAuth = FirebaseAuth.getInstance(); // get inSTACE
        database = FirebaseDatabase.getInstance();

    }
    // end region

    //# Menu
    private void Logout(){ // sign out method called in switchcase
        firebaseAuth.signOut();
        finish();
        startActivity(new Intent(HomeActivity.this,MainActivity.class));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) { //create menu on toolbar
        getMenuInflater().inflate(R.menu.menu,menu); //inflated inside
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) { // handle on click events on items on menu
        switch(item.getItemId()){
            case R.id.logoutMenu:{
                Logout();
                finish();
                break;
            }
            case R.id.ProfileMenu:{
                startActivity(new Intent(HomeActivity.this,ProfileActivity.class));
                finish();
                break;
            }

            case R.id.HomeMenu:{
                startActivity(new Intent(HomeActivity.this,HomeActivity.class));
                finish();
                break;

            }
        }

        return super.onOptionsItemSelected(item);
    }
}
 // Endregion

XML для каждой строки в утилизаторе VIEW

enter code here

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:cardElevation="4dp"

    app:cardUseCompatPadding="true">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"

        android:padding="8dp">


        <ImageView
            android:id="@+id/random"
            android:layout_width="45dp"
            android:layout_height="37dp"

            android:src="@drawable/note" />


        <TextView
            android:id="@+id/text_title"
            android:background="@color/LightPink"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            style="@style/TextAppearance.AppCompat.Headline"/>


        <View
            android:layout_marginTop="5dp"
            android:id="@+id/fillView"
            android:layout_width="fill_parent"
            android:layout_height="3dp"
            android:background="#c0c0c0"/>





        <TextView
            android:id="@+id/text_content"
            android:text="content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/TextAppearance.AppCompat.Body1"/>






    </LinearLayout>




</androidx.cardview.widget.CardView>

Даже если я больше не получаю данные, я смогу увидеть просмотр карты на своей странице ..?

1 Ответ

0 голосов
/ 13 января 2020

Не волнуйтесь, это может вам помочь: это может быть связано с нехваткой памяти и индексацией.

  1. Перезагрузите компьютер
  2. запустите ваш ide (android studio)
  3. Build -> Clean
  4. Build -> Rebuild project
  5. Файл -> Invalidate Cache / Restart -> Invalidate and restart
  6. После перезапуска android studio (на предыдущем шаге): Файл -> Syn c с файловой системой
  7. Файл -> Syn c проект с файлами Gradle
  8. Закрытие проекта
  9. Перезапустите android studio 10. Откройте ваш проект через несколько минут.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...