RecyclerView主要為有欄有列的顯示方式。
自訂元素:例元素為t_id
class 自訂元素的名稱 {
private String t_id;
public Re1_list(String t_id) {
this.t_id = t_id;
}
public String getT_id() {
return t_id;
}
public void setT_id(String t_id) {
this.t_id = t_id;
}
}
取得資料的方法:
try{
String r = JSON資料
JSONArray jsonArray = new JSONArray(r);
ArrayList<自訂元素> items=new ArrayList<自訂元素>();
for(int i =0;i<jsonArray.length();i++){
JSONObject jsonData=jsonArray.getJSONObject(i);
items.add(new Re1_list(jsonData.getString(資料位置)));
}
自訂Adapter SA=new 自訂Adapter(context,items);
Re1.setLayoutManager(new GridLayoutManager(this,輸入幾個欄位));
Re1.setAdapter(SA);
自訂Adapter的方法:
class Adapter名稱 extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
private Context context;
private ArrayList<自訂元素> items;
//自設OnClickListener 的方法如下:
private OnItemClickListener monitemClickListener=null;
public static interface OnItemClickListener{
void onItemClick(View view,int i);
}
public Adapter名稱(Context context, ArrayList<自訂元素> items) {
this.context = context;
this.items=items;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View item = LayoutInflater.from(context).inflate(layout的顯示畫面檔案,null);
RecyclerView.ViewHolder holder = new Holder名稱(item);
item.setOnClickListener(this);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
Holder名稱 hold=(Holder名稱) viewHolder;
自訂元素 data = items.get(i);
hold.自訂變數名.setText(data.自訂元素的get);
hold.itemView.setTag(i);
}
@Override
public int getItemCount() {
return items == null?0:items.size();
}
@Override
public void onClick(View v) {
if(monitemClickListener != null){
monitemClickListener.onItemClick(v,(int)v.getTag());
}
}
public void setOnItemClickListener(OnItemClickListener monitemClickListener) {
this.monitemClickListener = monitemClickListener;
}
private class Holder名稱 extends RecyclerView.ViewHolder {
private TextView 自訂變數名;
public Holder名稱(View itemView) {
super(itemView);
自訂變數名=itemView.findViewById(對應layout的顯示畫面檔案裡的元件名);
}
}
}
教學影片:
沒有留言:
張貼留言
影片的問題請留在影片的留言區裡。
部落格不會另外通知給我,所以很難發現你有留言。