需要用到:RecyclerView
依赖:
//XRecyclerView 框架
implementation 'com.jcodecraeer:xrecyclerview:1.3.2'
main layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_yuyue"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
mainActivity:
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
RecyclerView lv;
List<String> mlist = new ArrayList<>();
adapter_s ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mlist.add("2021-05-18 17:20 ~ 17:30");
mlist.add("2021-05-18 17:30 ~ 17:40");
mlist.add("2021-05-18 17:40 ~ 17:50");
mlist.add("2021-05-18 17:50 ~ 17:60");
mlist.add("2021-05-18 17:60 ~ 17:70");
mlist.add("2021-05-18 17:70 ~ 17:80");
mlist.add("2021-05-18 17:80 ~ 17:90");
mlist.add("2021-05-18 17:90 ~ 18:00");
mlist.add("2021-05-18 18:00 ~ 18:10");
mlist.add("2021-05-18 18:10 ~ 18:20");
lv = findViewById(R.id.list_yuyue);
lv.setLayoutManager(new LinearLayoutManager(this));
ad = new adapter_s(this, mlist);
lv.setAdapter(ad);
ad.setOnRecyclerViewItemClickListener(new adapter_s.OnItemClickListener() {
@Override
public void onClick(int position) {
ad.setThisPosition(position);
ad.notifyDataSetChanged();
//此处可以对集合做更多的处理
}
@Override
public void onLongClick(int position) {
}
});
}
}
adapter layout:
<?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="wrap_content"
android:orientation="vertical"
android:background="#4F6960">
<LinearLayout
android:id="@+id/line11"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="vertical">
<TextView
android:id="@+id/text11"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="16dp" />
<View
android:layout_width="match_parent"
android:layout_height="0.1dp"
android:background="#7E7E7E"/>
</LinearLayout>
</LinearLayout>
adapter activity:
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class adapter_s extends RecyclerView.Adapter<adapter_s.RecViewViewHolder> {
int a;
List<String> mlist = new ArrayList<>();
Context context;
public adapter_s(Context context, List<String> mlist) {
this.context = context;
this.mlist = mlist;
}
private int thisPosition;
public int getthisPosition() {
return thisPosition;
}
public void setThisPosition(int thisPosition) {
this.thisPosition = thisPosition;
}
private OnItemClickListener onRecyclerViewItemClickListener;
public interface OnItemClickListener {
void onClick(int position);
void onLongClick(int position);
}
public void setOnRecyclerViewItemClickListener(OnItemClickListener onItemClickListener) {
this.onRecyclerViewItemClickListener = onItemClickListener;
}
@NonNull
@Override
public RecViewViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
RecViewViewHolder holder = new RecViewViewHolder(LayoutInflater.from(context).inflate(R.layout.qqqqq, parent, false));
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecViewViewHolder holder, final int position) {
holder.text.setText(mlist.get(position));
Log.e("TAG", mlist.get(position) + "=====");
if (position == getthisPosition()) {
if (a == 1) {
//选中
holder.text.setBackgroundColor(Color.parseColor("#618C79"));
}
} else {
//未选中
holder.text.setBackgroundColor(Color.parseColor("#4F6960"));
}
//注释的跟下面实现的是一样的效果
// holder.line11.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
// a = 1;
//
// if (onRecyclerViewItemClickListener != null) {
//
// onRecyclerViewItemClickListener.onClick(position);
// }
//
// }
// });
if (onRecyclerViewItemClickListener != null) {
//点击事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRecyclerViewItemClickListener.onClick(position);
a = 1;
}
});
//长安事件
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
onRecyclerViewItemClickListener.onLongClick(position);
return false;
}
});
}
}
@Override
public int getItemCount() {
return mlist.size();
}
class RecViewViewHolder extends RecyclerView.ViewHolder {
private TextView text;
private LinearLayout line11;
public RecViewViewHolder(View itemView) {
super(itemView);
text = itemView.findViewById(R.id.text11);
line11 = itemView.findViewById(R.id.line11);
}
}
}
Okokokokokokokok.