当前位置: 首页 > 知识库问答 >
问题:

RecyclerView适配器列表获取%0

弓宏茂
2023-03-14
package com.example.marmeto.todolist;

import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    DBHelper db;

    ImageButton btn_addtodolist,btn_completelist;
    List<Model> todolist = new ArrayList<>();
    List<Model> adapterList = new ArrayList<>();
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private ToDoList_Adapter adapter;
    public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
    Model mToDOItemList = new Model();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        db = new DBHelper(this);

        recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(layoutManager);

        btn_addtodolist = (ImageButton) findViewById(R.id.btn_addtodolist);
        btn_completelist = (ImageButton)findViewById(R.id.btn_completedlist);
        btn_addtodolist.setOnClickListener(this);

        btn_completelist.setOnClickListener(this);

        getValue();
    }
    void getValue(){
        todolist.clear();

        todolist = db.getUserDetail();

        Collections.sort(todolist, new Comparator<Model>() {
            @Override public int compare(Model p1, Model p2) {
                return p1.getPosition()- p2.getPosition(); // Ascending
            }
        });
        adapter = new ToDoList_Adapter(todolist,getApplicationContext());

        ItemTouchHelper.SimpleCallback callback=new SwipItem(adapter);
        ItemTouchHelper helper=new ItemTouchHelper(callback);
        helper.attachToRecyclerView(recyclerView);

        recyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }



    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    public void onClick(View v) {


        if (v.getId() == R.id.btn_addtodolist) {
            Intent intent = new Intent(getApplicationContext(), AddToDoList_Activity.class);
            startActivity(intent);

        } else {
            Intent intent = new Intent(getApplicationContext(),CompletedActivity.class);
            startActivity(intent);

        }
    }
    }

AdapterClass:

    package com.example.marmeto.todolist;
    import android.content.Context;
    import android.support.annotation.NonNull;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.util.Collections;import java.util.List;

       public class ToDoList_Adapter extends             RecyclerView.Adapter<ToDoList_Adapter.ViewHolder> {

    List<Model> items;
    private Context context;

    public ToDoList_Adapter(List<Model> items, Context context) {
        this.items = items;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.todolist_adapter, parent, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

        final Model itemlist = items.get(position);
        holder.todoText.setText(itemlist.getPosition()+" "+itemlist.getTitle());
    }


    @Override
    public int getItemCount() {
        return items.size();
    }
    public void positionchange(int fromPosition, int toPosition)
    {

        try {
        Collections.swap(items,fromPosition,toPosition);

        DBHelper db = new DBHelper(context);
        db.updateList(items);
         }catch (Exception e)
         {
             e.printStackTrace();
         }
        this.notifyItemMoved(fromPosition,toPosition);


    }

    public void deletePlanet(int pos)
    {
        //GET ID
        try {
            Model p = items.get(pos);
            int id = p.getId();

            //DELETE FROM DB
            DBHelper db = new DBHelper(context);

            if (db.delete(id)) {
                items.remove(pos);
                db.updateList(items);

            } else {
                Toast.makeText(context, "Unable To Delete", Toast.LENGTH_SHORT).show();
            }
            this.notifyItemRemoved(pos);
        }catch (Exception e){
            e.printStackTrace();
        }




    }
    class ViewHolder extends RecyclerView.ViewHolder {

        public TextView todoText;
        public Button btn_done;
        public ViewHolder(final View itemView) {
            super(itemView);

            todoText = (TextView)itemView.findViewById(R.id.todoItem_text);
            btn_done = (Button)itemView.findViewById(R.id.btn_done);
            btn_done.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    DBHelper db = new DBHelper(context);
                    try {
                        Model p = items.get(getAdapterPosition());
                        db.updateData(p.getId());
                        items.remove(getAdapterPosition());

                        db.updateList(items);
                    }catch (Exception e){
                        e.printStackTrace();
                    }

                    notifyItemRemoved(getAdapterPosition());
                }
            });
        }
    }
}

提前感谢你的帮助。

共有1个答案

孟征
2023-03-14

您可以调用getValue(),然后将数据填充到onCreate中。但是,当您传递到一个新的活动,然后返回到前一个活动时,oncreate方法不会再次调用。

尝试将getValue()调用到onResume方法中

查看活动生命周期

 类似资料:
  • 在旧代码中,当我使用与自定义适配器时,我可以使用此代码获取项目。 现在我正在实现。如何从<代码>回收视图中获取项目。适配器?

  • 我有一个使用RecyclerView的列表,我想要的是,当我点击列表项时,它会打开一个片段,我一直在搜索,我只在一个活动中找到了它,但我只在片段中工作,如果我使用活动,它会随着我的操作栏消失,它都在片段中设置。 这是我的适配器类: 我需要将信用卡id发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用startActivity(intent)调用活动时才有效。 这里是

  • 在我的主要活动中,我有三个循环利用的观点。 其中一个在底部工作表中,它是主要的(默认情况下,底部工作表是打开以显示这个),在其适配器的onbind方法中,我做了一个onClickListener,以便当用户单击其中的项目时,我想要, 我想回到主活动类来设置To Start一个方法,它的滚动是关闭底表并为下一个回收视图设置数据(当底表关闭时会出现) ......这里的问题是如何从onBind方法的L

  • 一切正常。但Logcat中显示了一些错误。 E/RecyclerView:未附加适配器;跳过布局 E/RecyclerView:未附加适配器;跳过布局 我的activity代码: 我读过与同一问题有关的其他问题,但都没有帮助。请帮帮我

  • 我正在寻找在Android中使用列表适配器和Recyview适配器的区别。关于性能的任何不同,使用它们的利弊。

  • 我在stackoverflow上读到了几个解决这个问题的问题,但我无法解决我的问题。recyclerview显示网络视图。我的问题是适配器最初加载了正确的值(下图): 但当我向下滚动并再次向上滚动到第一个位置时,webview中会显示错误的值(下图): 我认为这个问题可能源于之前开始加载到webview 中,但我不知道如何处理此行为。以下是我的代码的相关部分: 任何帮助是值得赞赏的。 更新:在我的