我想要讓每一組RecyclerView顯示不一樣的圖片跟文字 就像下面演示一樣
我該如何做?
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
MyListAdapter myListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView=findViewById(R.id.recycleview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
mRecyclerView.setAdapter( new MyListAdapter());
}
class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.ViewHolder>{
class ViewHolder extends RecyclerView.ViewHolder{
private ImageView imageView;
private TextView textview;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView= itemView.findViewById(R.id.imageView);
TextView=itemView.findViewById(R.id.text1);
}
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recyle_item,parent,false);
return new ViewHolder(view);
}
@Override //從這裡面變更設定內容 引用holder.裡面 finID的資料修改
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 8;
}
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="280dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="240dp"
tools:ignore="MissingConstraints">
<ImageView
android:id="@+id/imageView"
android:layout_width="260dp"
android:layout_height="184dp"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/dog" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"
android:layout_below="@+id/imageView"
android:textSize="25dp"/>
</RelativeLayout>
</RelativeLayout>
解決: 新增一個容器 然後容器中有排序[0]~[x]
在onBindViewHolder中
Text.setTest(str[position])
所以我討厭官方標準教程...看著那東西學習就是會跑出這種問題
你要先理解ListView的原理
首先要有一串格式穩定的資料。(要存放這一串資料,就必須要有Array或List,如果不知道這是什麼,另外用點功。)
這一串資料的長度/筆數就是getItemCount實際上要回傳的數值。
以你的問題來說
這一串資料中每一筆應該就是「文字,圖片檔案(連結或位置)」這樣的格式
(怎麼組合起來,就看你個人創意了。用一個物件?用兩組程度對稱的Array/List?)
然後onBindViewHolder中注意有個傳入的引數「position」
這是說「目前的這個ItemView將要對應到第幾筆的資料」
如果傳入0,那就是Array/List中的第0筆資料...以此類推,這個數字絕對不會大於getItemCount的數字
剩下的...就需要硬著頭皮去「感受」了
它的規則跟一般Activity/Fragment設定UI的方式在直覺上似乎有點相衝突,但這是「物件導向」會帶給人的混亂
硬著頭皮上吧!