Adapter
import android.view.View;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.TextView;
import com.jxnu.nav_search.R;
import java.util.ArrayList;
import java.util.List;
public class RecyclerBaseAdapter extends RecyclerView.Adapter<RecyclerBaseAdapter.ViewHolder> {
private int layout;
private Context context;
//the data
private ArrayList<?> mData;
private OnItemClickListener mOnItemClickListener = null;
private ViewDataBinding viewDataBinding;
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
//define interface
public interface OnItemClickListener {
void onItemClick(int position, int layout);
}
public RecyclerBaseAdapter(List<?> data, int layout) {
this.mData = (ArrayList<?>) data;
this.layout = layout;
}
public void updateData(ArrayList<?> data) {
this.mData = data;
notifyDataSetChanged();
}
/**
* 初始化設置
*
* @param parent
* @param viewType
* @return
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
// find view
viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), layout, parent, false);
// set view
ViewHolder viewHolder = new ViewHolder(viewDataBinding.getRoot());
//return holder
return viewHolder;
}
/**
* 數據的綁定
*
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
// bind data
if (layout == R.layout.fragment_list) {
holder.title.setText("hello world");
}
}
@Override
public int getItemCount() {
return mData == null ? 0 : 1000;
}
/**
* 視圖holder
*/
public class ViewHolder extends RecyclerView.ViewHolder {
TextView title;
public ViewHolder(View itemView) {
super(itemView);
if (layout == R.layout.fragment_list) {
title = itemView.findViewById(R.id.tv_4);
}
}
}
}
使用方法
private void setRecyclerView() {
RecyclerView recyclerView = findViewById(R.id.rv_show);
recyclerView.setLayoutManager(new LinearLayoutManager(ScrollingActivity.this));
List<String> list = new ArrayList<>();
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
list.add("111");
recyclerView.setAdapter(new RecyclerBaseAdapter(list, R.layout.fragment_list));
recyclerView.setItemAnimator(new DefaultItemAnimator());
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(ScrollingActivity.this, DividerItemDecoration.VERTICAL);
Drawable drawable = ContextCompat.getDrawable(ScrollingActivity.this, R.color.colorAccent);
dividerItemDecoration.setDrawable(drawable);
recyclerView.addItemDecoration(dividerItemDecoration);
}
@SuppressLint("HandlerLeak")
private void setRecyclerView(String query) {
if (recyclerView == null) {
recyclerView = findViewById(R.id.rv_show);
recyclerView.setLayoutManager(new LinearLayoutManager(ScrollingActivity.this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(ScrollingActivity.this,
DividerItemDecoration.VERTICAL);
Drawable drawable = ContextCompat.getDrawable(ScrollingActivity.this, R.color.colorAccent);
dividerItemDecoration.setDrawable(drawable);
recyclerView.addItemDecoration(dividerItemDecoration);
//使用handler進行跟新視圖
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bundle bundle = msg.getData();
List<Datasets> list = bundle.getParcelableArrayList("datapar");
recyclerView.setAdapter(new RecyclerBaseAdapter(list, R.layout.fragment_list));
}
};
}
new Thread(new Runnable() {
@Override
public void run() {
List<Datasets> list = null;
try {
list = scrollAcViewModel.getQuery(query);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("_______---===============");
System.out.println(list);
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("datapar", (ArrayList<? extends Parcelable>) list);
msg.setData(bundle);
handler.sendMessage(msg);
}
}).start();
}