有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可扩展的recyclerview实现

我正在尝试将可扩展的recyclerview添加到我的应用程序中。到目前为止,我所做的是:

  1. 我在MyDatabaseHelper中创建了“private boolean expanded”。带有getter和setter的java
  2. “ArrayList<;String>;word\u id、word\u标题、word\u含义”这是我在main活动中的ArrayList。java 问题是,在我的customAdapter中。java-->;“boolean isExpanded = ArrayList.get(position).isExpanded();” 错误如下:无法从静态上下文引用非静态方法“get(int)”

应该通过而不是ArrayList传递什么来运行代码。 文件中的相关代码为:

主要活动。java

    public class MainActivity extends AppCompatActivity {


    private Button button;
    RecyclerView recyclerView;

    MyDatabaseHelper myDB;
    ArrayList<String> word_id, word_title,word_meaning;
    customAdapter customAdapter;


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

        button = (Button)findViewById(R.id.add);
        recyclerView = findViewById(R.id.recyclerView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    openAddActivity();
            }
        });

        myDB = new MyDatabaseHelper(MainActivity.this);
        word_id = new ArrayList<>();
        word_title = new ArrayList<>();
        word_meaning = new ArrayList<>();

        storeDataInArrays();
        customAdapter = new customAdapter(MainActivity.this,word_id,word_title,word_meaning);
        recyclerView.setAdapter(customAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));



}    }

自定义适配器。java

    public class customAdapter extends RecyclerView.Adapter<customAdapter.MyViewHolder>{

    Context context;
    private ArrayList word_id,word_title,word_meaning;

    customAdapter(Context context,
                  ArrayList word_id,
                  ArrayList word_title,
                  ArrayList word_meaning){
        this.context = context;
        this.word_id = word_id;
        this.word_title = word_title;
        this.word_meaning = word_meaning;

    }

    @NonNull

    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.my_row,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        holder.word_id.setText(String.valueOf(word_id.get(position)));
        holder.word_title.setText(String.valueOf(word_title.get(position)));
        holder.word_meaning.setText(String.valueOf(word_meaning.get(position)));

        boolean isExpanded = ArrayList.get(position).isExpanded();
        holder.expandableLayout.setVisibility(isExpanded?View.VISIBLE:View.GONE);
    }

    @Override
    public int getItemCount() {
        return word_id.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView word_id,word_title,word_meaning;
        ConstraintLayout expandableLayout;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            word_id = itemView.findViewById(R.id.word_id);
            word_title = itemView.findViewById(R.id.word_title);
            word_meaning = itemView.findViewById(R.id.word_meaning);

            expandableLayout = itemView.findViewById(R.id.expandable_layout);

            word_title.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  MyDatabaseHelper myDatabaseHelper = ArrayList.get(getAdapterPosition());
                  myDatabaseHelper.setExpanded(!myDatabaseHelper.isExpanded());
                  notifyItemChanged(getAdapterPosition());
                }
            });

        }
    }
}

MyDatabaseHelper。java

    public class MyDatabaseHelper extends SQLiteOpenHelper {
    private  Context context;

    private boolean expanded;

    private static final String DATABASE_NAME = "wordLibrary.db";
    private static final int DATABASE_VERSION = 1;

    private   static final String TABLE_NAME = "my_library";
    private   static  final String COLUMN_ID = "_id";
    private   static  final String COLUMN_TITLE = "word_title";
    private   static  final String COLUMN_MEANING = "word_meaning";



    public MyDatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    public boolean isExpanded() {
        return expanded;
    }

    public void setExpanded(boolean expanded) {
        this.expanded = expanded;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String query =
                "CREATE TABLE " + TABLE_NAME +
                        " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_TITLE + " TEXT, " +
                        COLUMN_MEANING + " TEXT);";

        db.execSQL(query);

        this.expanded = false;

    }
}

共 (0) 个答案