适用于Android的RecyclerView的NoClassDefFound

时间:2016-02-17 10:14:28

标签: android android-recyclerview android-support-library

我的活动有一个recyclerview,我的代码在IDE中没有错误并接受所有支持库,但是当我尝试运行我的代码时,应用程序崩溃了。

问题是什么?

package com.ed.test4;



import java.util.ArrayList;
import java.util.List; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private RecyclerView contactsRecyclerView;

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

    contactsRecyclerView = (RecyclerView) findViewById(R.id.contacts_recyclerview);
    contactsRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    List<Contact> contacts = new ArrayList<>();
    for (int i = 0; i < 50; i++) {
        contacts.add(new Contact("Contact #" + i));
    }

    ContactsAdapter adapter = new ContactsAdapter(contacts);
    contactsRecyclerView.setAdapter(adapter);
}

private class ContactsAdapter extends RecyclerView.Adapter<ContactHolder> {
    private List<Contact> contacts;

    public ContactsAdapter(List<Contact> contacts) {
        this.contacts = contacts;
    }

    @Override
    public ContactHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        View v = inflater.inflate(R.layout.list_item, parent, false);
        return new ContactHolder(v);
    }

    @Override
    public void onBindViewHolder(ContactHolder holder, int position) {
        Contact contact = contacts.get(position);
        holder.tvContactName.setText(contact.getName());
        holder.tvContactRegisterDate.setText(contact.getRegisterDate().toString());
    }

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

private class ContactHolder extends RecyclerView.ViewHolder {
    private TextView tvContactName, tvContactRegisterDate;

    public ContactHolder(View itemView) {
        super(itemView);
        tvContactName = (TextView) itemView.findViewById(R.id.contact_name_textview);
        tvContactRegisterDate = (TextView) itemView.findViewById(R.id.contact_register_date_textview);
    }
}


public class Contact {
private String name;
private Date registerDate;

public Contact(String name) {
    this.name = name;
    registerDate = new Date();
    }

public String getName() {
    return name;
    }

public Date getRegisterDate() {
    return registerDate;
    }

public void setName(String name) {
    this.name = name;
    }
}
    }

and this is screenshot of logcat shows error

1 个答案:

答案 0 :(得分:0)

我假设这个问题发生在eclipse中只有在android studio中你只需要添加类似

的编译版本
compile 'com.android.support:recyclerview-v7:22.0.0'

in dependencies部分。

在eclipse中使RecyclerView工作,您需要在项目中添加回收站视图库。正如您所说,它没有显示任何错误,这意味着您已将Recycler视图添加为库项目,而您只是落后一步才能使其工作。

注意: - 您尚未将Recycler视图库项目添加到您的应用程序中,然后转到 Android / Sdk / extras / android / support / v7 / recyclerview路径并导入此项目。

现在右键点击项目 - &gt;转到java构建路径 - &gt;选择项目标签 - &gt;点击添加 - &gt;选择回收商视图项目

现在清理构建并运行。它会工作。