java可扩展的recyclerview实现
我正在尝试将可扩展的recyclerview
添加到我的应用程序中。到目前为止,我所做的是:
- 我在MyDatabaseHelper中创建了“private boolean expanded”。带有getter和setter的java李>
- “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) 个答案