【发布时间】:2020-06-27 12:07:21
【问题描述】:
我有一个片段(我也在活动中尝试过),它有 edittext 和 button 和 recyclerview 我希望在单击按钮以搜索文本后在 recyclerview 中显示 json 数据 编辑文本。
问题是: 它工作正常,但我应该按我的编辑文本
这里是按钮点击监听代码:
searchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hospsAdapter = new hospsAdapter(getContext(), arrayList, HospitalFragment.this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(hospsAdapter);
loadData()
}
}
在加载数据方法中,我在从 volley 获取 json 数据后调用此方法
public void updateList(ArrayList<HospitalsModel> list){
if(hospsAdapter != null) {
hospsAdapter.updateData(list);
}
}
这是适配器代码:
public class hospsAdapter extends RecyclerView.Adapter<hospsAdapter.OrdersViewHolder> {
private Context context;
private ItemClickHandler itemClickHandler;
private List<HospitalsModel> orderDetailsList;
HospitalsModel productsModel;
public hospsAdapter(Context context, List<HospitalsModel> orderDetailsList , ItemClickHandler itemClickHandler) {
this.context = context;
this.itemClickHandler = itemClickHandler;
this.orderDetailsList = new ArrayList<>(orderDetailsList);
}
public hospsAdapter() {
}
public interface ItemClickHandler{
public void onItemClick(HospitalsModel productsModel);
}
@NonNull
@Override
public OrdersViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.hosps_list_item, viewGroup, false);
return new OrdersViewHolder(view);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onBindViewHolder(@NonNull OrdersViewHolder ordersViewHolder, int i) {
HospitalsModel productsModel = orderDetailsList.get(i);
Glide.with(context).load(productsModel.getImageUrl()).into(ordersViewHolder.appCompatImageView);
ordersViewHolder.orderTv.setText(productsModel.getName());
ordersViewHolder.orderTv2.setText("العنوان: "+productsModel.getAddress());
ordersViewHolder.orderTv5.setText("متاح الان: نعم"+"");
final int[] flag = {1};
ordersViewHolder.appCompatImageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(flag[0] ==1) {
ordersViewHolder.appCompatImageView2.setImageDrawable(context.getDrawable(R.drawable.heart2));
flag[0] = 2;
}else {
ordersViewHolder.appCompatImageView2.setImageDrawable(context.getDrawable(R.drawable.heart));
flag[0] =1;
}
}
});
ordersViewHolder.book.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialPhoneNumber(productsModel.getOpenHo(),context);
}
});
ordersViewHolder.map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri gmmIntentUri = Uri.parse("geo:0,0?q=" +productsModel.getName());
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(v.getContext().getPackageManager()) != null) {
v.getContext().startActivity(mapIntent);
}
}
});
}
@Override
public int getItemCount() {
return orderDetailsList.size();
}
public void updateData(List<HospitalsModel> movies) {
orderDetailsList.clear();
this.orderDetailsList = movies;
notifyDataSetChanged();
}
public class OrdersViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.order_img)
AppCompatImageView appCompatImageView;
@BindView(R.id.fav_img)
AppCompatImageView appCompatImageView2;
@BindView(R.id.order_tv4)
TextView orderTv2;
@BindView(R.id.order_tv)
TextView orderTv;
@BindView(R.id.order_tv5)
TextView orderTv5;
@BindView(R.id.button_more)
Button book;
@BindView(R.id.button_map)
Button map;
public OrdersViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getAdapterPosition();
HospitalsModel productsModel = orderDetailsList.get(position);
itemClickHandler.onItemClick(productsModel);
}
}
@Override
public long getItemId(int position) {
return position;
}
public void dialPhoneNumber(String phoneNumber,Context context) {
if(Build.VERSION.SDK_INT > 22) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
ActivityCompat.requestPermissions((DoctorsActivity)context, new String[]{Manifest.permission.CALL_PHONE}, 101);
return;
}
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phoneNumber));
if (intent.resolveActivity(context.getPackageManager()) != null) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
context.startActivity(intent);
}
}else {
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phoneNumber));
if (intent.resolveActivity(context.getPackageManager()) != null) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
context.startActivity(intent);
}
}
}
}
我已经尝试了每个相关问题的所有内容,但没有任何改变 所以请帮助并告诉我为什么在android开发时会发生这个问题。 提前致谢。
【问题讨论】:
标签: android android-studio android-recyclerview