【问题标题】:How to use RecyclerView onCreate如何使用 RecyclerView onCreate
【发布时间】:2015-03-26 02:29:43
【问题描述】:

我正在尝试使用 SQLite 数据库中的一组联系人填充 RecyclerView。我从 onCreate 中读到的关于这样做的所有内容都说要这样做

public class Contacts extends Activity {
	
	private RecyclerView rView;
	private NewAdapter adapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.contacts_main);
		
		rView = (RecyclerView) findViewById(R.id.r_list);
		adapter = new NewAdapter(Contacts.this, DBDatabaseAdapter.getContactData());
		rView.setLayoutManager(new LinearLayoutManager(this));
		rView.setAdapter(adapter);
      }
  }

但它给了我一个错误

03-25 22:17:24.505:E/AndroidRuntime(16011):java.lang.RuntimeException:无法启动活动 ComponentInfo{edu.ecpi.myappv3/edu.ecpi.myappv3.Contacts}:android.view。 InflateException: Binary XML file line #36: Error inflating class android.support.v7.widget.RecyclerView

其他教程都是这样处理的

public View listCreateView (LayoutInflater inflater, ViewGroup container,
    		Bundle savedInstanceState) 
    {
    	View layout = inflater.inflate(R.layout.custom_contact, container, false);
    	rView = (RecyclerView) layout.findViewById(R.id.r_list);
    	adapter = new NewAdapter(Contacts.this, DBDatabaseAdapter.getContactData());
    	rView.setAdapter(adapter);
    	
    	return layout;
    }

它有一个充气机。我想使用第一种方式。任何人都可以帮忙。 这是我的相关代码:

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;



public class NewAdapter extends RecyclerView.Adapter<NewAdapter.MyViewHolder> {

	private final LayoutInflater inflater;
	private Contact[] contact;
	
	public NewAdapter (Context context, Contact[] contact)
	{
		inflater = LayoutInflater.from(context);
		this.contact=contact;
		
	}
	@Override
	public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
		View view = inflater.inflate(R.layout.custom_contact, parent, false);
		MyViewHolder holder = new MyViewHolder(view);
		return holder;
	}
	@Override
	public int getItemCount() {
		
		return contact.length;
	}

	@Override
	public void onBindViewHolder(MyViewHolder holder, int position) {
		Contact current = contact[position];
		holder.name.setText(current._name);
		holder.address.setText(current._address);
		
	}


	class MyViewHolder extends RecyclerView.ViewHolder
	{
		TextView name;
		TextView address;
		public MyViewHolder(View itemView) {
			
			super(itemView);
			name=(TextView) itemView.findViewById(R.id.contactlayout_name);
			address= (TextView) itemView.findViewById(R.id.contactlayout_address);
			
		}
		
	}

	
}

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/contact_layout"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_gravity="bottom"
        android:orientation="horizontal" >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/r_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </android.support.v7.widget.RecyclerView>

    </RelativeLayout>

</FrameLayout>
Here is the xml for the recycled object.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/contactlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/contactlayout_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/contactlayout_address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceMedium" />


</LinearLayout>

【问题讨论】:

  • 引用的appcompat??
  • 不相关,但您可以通过以下方式扩充视图布局: View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.custom_contact, parent, false);

标签: java android layout-inflater android-recyclerview


【解决方案1】:

您好像忘记将 RecyclerView 添加到您的构建依赖项中

compile 'com.android.support:recyclerview-v7:21.0.+'

来源:https://knowledgecollisions.wordpress.com/2016/03/29/using-recyclerview-and-cardview-in-your-android-app/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2018-01-05
    • 1970-01-01
    • 2020-08-31
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多