java - 可扩展的recyclerview实现
问题描述
我正在尝试将可扩展添加recyclerview
到我的应用程序中。到目前为止我所做的是:
- 我在 MyDatabaseHelper.java中使用 getter 和 setter 创建了“私有布尔扩展”。
- “ArrayList<String> word_id, word_title, word_meaning”这是我在MainActivity.java
中的 ArrayList 问题是,在我的customAdapter.java -->”中
boolean isExpanded = ArrayList.get(position).isExpanded();
出现错误:非静态方法 'get(int)' 不能被引用静态上下文
应该传递什么而不是ArrayList来运行代码。文件中的相关代码是:
MainActivity.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));
} }
customAdapter.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;
}
}
解决方案
推荐阅读
- python - KeyError:“['month''day'] 不在索引中”
- mysql - 如何使用表 1 和表 2 中的特定匹配行从表 1 中获取所有行
- hyperledger-fabric - fabric-sdk-java:NsReadWriteSet.parseFrom 抛出 InvalidProtocolBufferException
- android - 如何重命名谷歌播放控制台暂停的应用程序
- r - 在 R Shiny 中调用 downloadHandler 函数时,如何生成带有选择提示的弹出窗口,提示要下载哪个对象?
- java - Jira ServiceDesk 创建请求 API - 将字符串 [] 添加到自定义字段 (Java)
- android - 为什么 ExifInterfac 返回 0 的纬度和经度值?
- c# - 如何将 json 附加到 Elastic Search .NEST 客户端中的现有 json?
- r - 使用快捷方式引用将 R 对象名称转换为字符串
- react-native - 如何使用 expo 通过 React Native 收听 Mercure 服务器?