recycleview的基本使用以及在使用时遇到的问题
步骤:
1、添加依赖
在AS的build.gradle
中添加依赖,然后同步一下就可以引入依赖包:
- dependencies {
- ...
- compile 'com.android.support:recyclerview-v7:25.3.+'
- }
2、布局文件(主页面)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycleview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
3、Adapter适配器代码
package brother.com.recycleviewtext; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.List; /** * Created by Administrator on 2017/6/18. */ public class FuiltAdapter extends RecyclerView.Adapter<FuiltAdapter.ViewHolder> { private List<Fuilt>mFlist; private View view; static class ViewHolder extends RecyclerView.ViewHolder{ View fuiltview; ImageView fuimage; TextView funame; public ViewHolder(View itemView) { super(itemView); fuiltview=itemView; fuimage = (ImageView) itemView.findViewById(R.id.image); funame = (TextView) itemView.findViewById(R.id.fuilt_name); } } public FuiltAdapter(List<Fuilt> fuiltslist){ mFlist=fuiltslist; } //点击事件 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.layout_item,parent,false); final ViewHolder holder = new ViewHolder(view); holder.fuiltview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position=holder.getAdapterPosition(); Fuilt fuilt=mFlist.get(position); Toast.makeText(v.getContext(), "你点击的是"+fuilt.getFuiltname(), Toast.LENGTH_SHORT).show(); } }); holder.fuiltview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int postion=holder.getAdapterPosition(); Fuilt fuilt=mFlist.get(postion); Toast.makeText(v.getContext(), "你点击的是"+fuilt.getImageId(), Toast.LENGTH_SHORT).show(); } }); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Fuilt fuilt=mFlist.get(position); holder.fuimage.setImageResource(fuilt.getImageId()); holder.funame.setText(fuilt.getFuiltname()); } @Override public int getItemCount() { return mFlist.size(); } }
4、javaBeen代码
package brother.com.recycleviewtext; /** * Created by Administrator on 2017/6/18. */ public class Fuilt { private String fuiltname; private int imageId; public Fuilt(String fuiltname, int imageId) { this.fuiltname = fuiltname; this.imageId = imageId; } public String getFuiltname() { return fuiltname; } public void setFuiltname(String fuiltname) { this.fuiltname = fuiltname; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } }
5、主界面代码
package brother.com.recycleviewtext; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<Fuilt> mFuiltList=new ArrayList<>(); private RecyclerView recycleview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFuilt(); recycleview= (RecyclerView) findViewById(R.id.recycleview); recycleview.setLayoutManager(new LinearLayoutManager(this)); recycleview.setAdapter(new FuiltAdapter(mFuiltList)); } private void initFuilt() { for (int i=0;i<10;i++){ Fuilt find1 = new Fuilt("find1", R.mipmap.find_1); mFuiltList.add(find1); Fuilt find2 = new Fuilt("find2", R.mipmap.find_2); mFuiltList.add(find2); Fuilt find3 = new Fuilt("find3", R.mipmap.find_3); mFuiltList.add(find3); Fuilt find4 = new Fuilt("find4", R.mipmap.find_4); mFuiltList.add(find4); Fuilt find5 = new Fuilt("find5", R.mipmap.find_5); } } } 遇到的问题:
引入recycleview是版本不兼容报上面错误。
解决办法:
把版本修改成下面的写法解决: