在线购票搜索站点,根据首字母排序有bug
This commit is contained in:
parent
b49d0532f7
commit
57a17db5e7
|
@ -57,4 +57,6 @@ dependencies {
|
|||
|
||||
implementation ("com.geyifeng.immersionbar:immersionbar:3.2.2")
|
||||
implementation ("com.geyifeng.immersionbar:immersionbar-components:3.2.2")
|
||||
|
||||
implementation ("com.belerweb:pinyin4j:2.5.1")
|
||||
}
|
|
@ -17,6 +17,7 @@ public class OnlineBuy extends AppCompatActivity {
|
|||
setContentView(R.layout.activity_online_buy);
|
||||
//todo 选择路线
|
||||
EditText begin = findViewById(R.id.editText6);
|
||||
begin.setText(getIntent().getStringExtra("name"));
|
||||
begin.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
|
@ -9,6 +9,8 @@ import android.annotation.SuppressLint;
|
|||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -21,6 +23,8 @@ import com.google.gson.Gson;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.Call;
|
||||
|
@ -29,6 +33,7 @@ import okhttp3.OkHttpClient;
|
|||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
|
||||
|
||||
public class chooseLine extends AppCompatActivity {
|
||||
RecyclerView lineRecycle;
|
||||
RecyclerView stationRecycle;
|
||||
|
@ -36,11 +41,13 @@ public class chooseLine extends AppCompatActivity {
|
|||
StationAdapter stationAdapter;
|
||||
List<Zhandian_item.SubwayLinesDTO> zhandianItems = new ArrayList<>();
|
||||
List<String> staion = new ArrayList<>();
|
||||
int selectedLineIndex = 0;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_choose_line);
|
||||
ImageView back = findViewById(R.id.imageView18);
|
||||
TextView sort = findViewById(R.id.textView48);
|
||||
lineRecycle = findViewById(R.id.recyclerView);
|
||||
stationRecycle = findViewById(R.id.stationRecycle);
|
||||
myAdapter = new MyAdapter();
|
||||
|
@ -61,11 +68,35 @@ public class chooseLine extends AppCompatActivity {
|
|||
});
|
||||
//todo 清除输入框中的内容
|
||||
ImageView clean = findViewById(R.id.imageView19);
|
||||
EditText shuru = findViewById(R.id.editText3);
|
||||
EditText searchEditText = findViewById(R.id.editText3);
|
||||
clean.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
shuru.setText("");
|
||||
searchEditText.setText("");
|
||||
filterStationList("");
|
||||
}
|
||||
});
|
||||
searchEditText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
filterStationList(s.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
}
|
||||
});
|
||||
//todo 根据站点的首字母进行排序
|
||||
sort.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// Collections.sort(staion, new PinyinComparator());
|
||||
|
||||
stationAdapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
Request request = new Request.Builder()
|
||||
|
@ -96,6 +127,7 @@ public class chooseLine extends AppCompatActivity {
|
|||
Zhandian_item zhandianItem = gson.fromJson(result, Zhandian_item.class);
|
||||
zhandianItems.addAll(zhandianItem.subwayLines);
|
||||
List<String> stations = zhandianItems.get(0).stations;
|
||||
stationAdapter.notifyDataSetChanged();
|
||||
staion.addAll(stations);
|
||||
myAdapter.notifyDataSetChanged();
|
||||
|
||||
|
@ -109,7 +141,20 @@ public class chooseLine extends AppCompatActivity {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void filterStationList(String query) {
|
||||
// 如果查询字符串为空,则显示所有站点
|
||||
if (query.isEmpty()) {
|
||||
stationAdapter.updateStationList(new ArrayList<>(staion));
|
||||
} else {
|
||||
List<String> filteredList = new ArrayList<>();
|
||||
for (String stationName : staion) {
|
||||
if (stationName.toLowerCase().contains(query.toLowerCase())) {
|
||||
filteredList.add(stationName);
|
||||
}
|
||||
}
|
||||
stationAdapter.updateStationList(filteredList);
|
||||
}
|
||||
}
|
||||
public class MyViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView lineName;
|
||||
|
||||
|
@ -136,12 +181,19 @@ public class chooseLine extends AppCompatActivity {
|
|||
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
|
||||
String lineName = zhandianItems.get(position).lineName;
|
||||
holder.lineName.setText(lineName);
|
||||
// holder.itemView.setBackgroundColor(Color.WHITE);
|
||||
// 设置背景颜色
|
||||
if (selectedLineIndex == position) {
|
||||
// 如果是选中的线路,设置为白色
|
||||
holder.itemView.setBackgroundColor(Color.WHITE);
|
||||
} else {
|
||||
holder.itemView.setBackgroundColor(Color.parseColor("#DFDBDB"));
|
||||
}
|
||||
//TODO 点击事件
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
selectedLineIndex = position;
|
||||
myAdapter.notifyDataSetChanged();
|
||||
List<String> stations = zhandianItems.get(position).stations;
|
||||
staion.clear();
|
||||
staion.addAll(stations);
|
||||
|
@ -171,6 +223,15 @@ public class chooseLine extends AppCompatActivity {
|
|||
public void onBindViewHolder(@NonNull StationViewHolder holder, int position) {
|
||||
String stationName = staion.get(position);
|
||||
holder.stationName.setText(stationName);
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//todo 站点信息
|
||||
Intent intent = new Intent(chooseLine.this,OnlineBuy.class);
|
||||
intent.putExtra("name",stationName);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -186,5 +247,34 @@ public class chooseLine extends AppCompatActivity {
|
|||
stationName = itemView.findViewById(R.id.textView51);
|
||||
}
|
||||
}
|
||||
public void updateStationList(List<String> filteredList) {
|
||||
staion.clear();
|
||||
staion.addAll(filteredList);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
// public class PinyinComparator implements Comparator<String> {
|
||||
// @Override
|
||||
// public int compare(String s1, String s2) {
|
||||
// String pinyin1 = getPinyin(s1);
|
||||
// String pinyin2 = getPinyin(s2);
|
||||
//
|
||||
// int minLen = Math.min(pinyin1.length(), pinyin2.length());
|
||||
// for (int i = 0; i < minLen; i++) {
|
||||
// int result = pinyin1.substring(i, i + 1).compareTo(pinyin2.substring(i, i + 1));
|
||||
// if (result != 0) {
|
||||
// return result;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 如果所有比较过的字母都相同,则比较拼音长度
|
||||
// return Integer.compare(pinyin1.length(), pinyin2.length());
|
||||
// }
|
||||
|
||||
// private String getPinyin(String chinese) {
|
||||
// String pinyin = Pinyin4j.toPinyin(chinese, "");
|
||||
// // 移除拼音中的声调
|
||||
// return pinyin.replaceAll("[0-9]", "");
|
||||
// }
|
||||
}
|
||||
//}
|
|
@ -42,6 +42,8 @@
|
|||
android:layout_marginEnd="24dp"
|
||||
android:background="@drawable/edit_background"
|
||||
android:hint="输入站点"
|
||||
android:paddingLeft="8dp"
|
||||
android:textColor="@color/black"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/imageView18"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/imageView18"
|
||||
|
|
Loading…
Reference in New Issue