我正在试用支持库的recyclerview和cardview,创建一个todo应用程序,通过sqlite db加载持久化的Task项。
每张卡都包含一个任务描述字符串和一个' x'右上角的图片,用于从recyclerview中删除卡片。
我正在测试第一部分,添加一项任务。按下提交后,我在调试器中看到任务是持久的。然后我调用adapter.notifyItemAdded,传入我的数据源的最新索引。该应用程序在运行后无法显示任何卡片,并且logcat中未显示任何错误。
MyActivity.xml:
....a bunch of RoboGuice injections
@InjectView(R.id.palettePurple)
private RelativeLayout palettePurple;
private ImageView deleteBtn;
private String currentColor;
TaskAdapter adapter;
List<Task> allTasks;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// register click listeners, "this" activity will listen for clicks on these views
editBtn.setOnClickListener(this);
submitBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
paletteRed.setOnClickListener(this);
paletteOrange.setOnClickListener(this);
paletteGreen.setOnClickListener(this);
paletteRoyalBlue.setOnClickListener(this);
palettePurple.setOnClickListener(this);
RecyclerView recList = (RecyclerView) findViewById(R.id.tasksRV);
recList.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recList.setLayoutManager(llm);
allTasks = Task.getAll();
adapter = new TaskAdapter(allTasks);
recList.setAdapter(adapter);
}
....menu overrides....
@Override
public void onClick(View v) {
Log.d("TRACE", "inside onClick");
....handling other clicks....
// submit button was clicked, create a new task
else if(v.getId() == R.id.submitBtn) {
String taskDescription = taskET.getText().toString();
Task newTask = new Task(taskDescription, currentColor);
newTask.save();
int lastIndex = allTasks.size()-1;
adapter.notifyItemInserted(lastIndex);
editSection.setVisibility(View.GONE);
editBtn.setVisibility(View.VISIBLE);
}
}
}
我的卡xml和适配器java:How do I get the position selected in a RecyclerView?
答案 0 :(得分:1)
您必须使用android.support.v7.widget.CardView
。如果您使用Android Studio,请将其添加到您的依赖项:
compile 'com.android.support:cardview-v7:+'
在build.gradle
文件中。有关Android Developer website的更多信息。
答案 1 :(得分:1)
我很确定android studio支持recyclerview。
在您的项目build.gradle
文件中添加:
dependencies {
...
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
}
这是一个美丽的博客,你可以学习和使用recyclerview&amp; cardview: http://www.binpress.com/tutorial/android-l-recyclerview-and-cardview-tutorial/156
希望它会有所帮助。
<强>更新强>
版本号可以超时更改。获得最新信息的最佳方式:
右键点击项目 - &gt;打开模块设置 - &gt;去模块部分&amp;选择模块 - &gt;在右侧go&#34; Dependency选项卡&#34; - &GT;点击&#39; +&#39;按钮,选择&#39;库依赖&#39; - &GT;搜索您所需的lib&amp;添加。
确保您的SDK支持存储库&amp;支持库已更新。