RecyclerView卡片没有显示任何东西

时间:2014-10-30 08:36:16

标签: android listview

我正在试用支持库的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?

2 个答案:

答案 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;支持库已更新。