gpt4 book ai didi

java - 如何在 BaseAdapter 上实现 Filterable?

转载 作者:行者123 更新时间:2023-12-02 05:31:51 26 4
gpt4 key购买 nike

在我的自定义 BaseAdapter 中,我们使用 List< GetSet >,在此我们如何使用 Filterable 标题和地址

请查看我的代码

自定义 BaseAdapte

public class JobAdapater extends BaseAdapter implements Filterable {
private Context context;
private List<JobsGetSet> rowItems;
// private JobsGetSet JobItems;
private LayoutInflater layoutInflater;

// ArrayFilter mFilter;

public JobAdapater(Context context , List<JobsGetSet> rowItems2) {
this.context = context;
this.rowItems = rowItems2;
layoutInflater = LayoutInflater.from(this.context);
}

@Override
public View getView(int position , View convertView , ViewGroup parent)
{
final JobsGetSet JobItems = (JobsGetSet) this.getItem(position);
View view = null;
try
{
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.job_list_items , null);

TextView textViewTitle = (TextView) view.findViewById(R.id.textViewTitle);
TextView textViewAddess = (TextView) view.findViewById(R.id.textViewAddess);
TextView textViewCity = (TextView) view.findViewById(R.id.textViewCity);
TextView textViewTime = (TextView) view.findViewById(R.id.textViewTime);
TextView textViewMap = (TextView) view.findViewById(R.id.textViewMap);
TextView textViewPH = (TextView) view.findViewById(R.id.textViewPHtext);
TextView textViewNumber = (TextView) view.findViewById(R.id.textViewPhNumber);

LinearLayout linearLayoutAdderss = (LinearLayout) view.findViewById(R.id.linearLayoutAdderss);

Typeface typface = Typeface.createFromAsset(context.getAssets() , "fonts/SourceSansPro-Regular.otf");
textViewTitle.setTypeface(typface , Typeface.BOLD);
textViewAddess.setTypeface(typface);
textViewCity.setTypeface(typface);
textViewTime.setTypeface(typface);
textViewMap.setTypeface(typface);
textViewPH.setTypeface(typface , Typeface.BOLD);
textViewNumber.setTypeface(typface);

if (CommonMethods.openAreClos == true)
{
textViewTitle.setTextSize(18);
textViewAddess.setTextSize(16);
textViewCity.setTextSize(13);
textViewTime.setTextSize(12);
textViewNumber.setTextSize(16);
textViewMap.setTextSize(12);

linearLayoutAdderss.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
linearLayoutAdderss.getLayoutParams().width = 360;
linearLayoutAdderss.requestLayout();
} else
{
textViewTitle.setTextSize(15);
textViewAddess.setTextSize(13);
textViewCity.setTextSize(11);
textViewTime.setTextSize(9);
textViewNumber.setTextSize(13);
textViewMap.setTextSize(9);

linearLayoutAdderss.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
linearLayoutAdderss.getLayoutParams().width = 260;
linearLayoutAdderss.requestLayout();
}
Paint p = new Paint();
p.setColor(Color.parseColor("#89BC58"));
p.setFlags(Paint.UNDERLINE_TEXT_FLAG);
textViewNumber.setPaintFlags(p.getFlags());

String addess = JobItems.getAddress();
addess = addess.replace("\n" , "").replace("\r" , "");

textViewTitle.setText(JobItems.getCustomerName());
textViewAddess.setText(addess);
textViewCity.setVisibility(View.GONE);
textViewTime.setText(JobItems.getTime());
textViewNumber.setText(" " + JobItems.getContactMobile());


} catch (Exception e)
{
e.printStackTrace();
}

return view;
}

@Override
public int getCount()
{
return rowItems.size();
}

@Override
public Object getItem(int position)
{
return rowItems.get(position);
}

@Override
public long getItemId(int position)
{
return 0;
}

@Override
public Filter getFilter()
{

return null;
}
}

GetSet 类

public class JobsGetSet {

private String id;
private String userId;
private String companyID;
private String customerName;
private String estimateID;
private String eventID;
private String clientID;
private String estimatedDate;
private String time;
private String visitType;
private String visit;
private String serviceType;
private String status;
private String area;
private String jobTitle;
private String address;
private String contactName;
private String contactID;
private String contactMobile;
private String estimatedHours;
private String actualStartDate;
private String actTime;
private String actualFinishDate;
private String actualFinishTime;
private String actualDuration;
private String jobPriority;
private String completionNotes;
private String jobDescription;
private String specialInstruction;
private String statusID;
private String description;
private String isSend;


private String startDateTime;
private String endDateTime;
private String isSeen;



public String getStartDateTime()
{
return startDateTime;
}
public void setStartDateTime(String startDateTime)
{
this.startDateTime = startDateTime;
}
public String getEndDateTime()
{
return endDateTime;
}
public void setEndDateTime(String endDateTime)
{
this.endDateTime = endDateTime;
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getUserId()
{
return userId;
}
public void setUserId(String userId)
{
this.userId = userId;
}
public String getCompanyID()
{
return companyID;
}
public void setCompanyID(String companyID)
{
this.companyID = companyID;
}
public String getCustomerName()
{
return customerName;
}
public void setCustomerName(String customerName)
{
this.customerName = customerName;
}
public String getEstimateID()
{
return estimateID;
}
public void setEstimateID(String estimateID)
{
this.estimateID = estimateID;
}
public String getEventID()
{
return eventID;
}
public void setEventID(String eventID)
{
this.eventID = eventID;
}
public String getClientID()
{
return clientID;
}
public void setClientID(String clientID)
{
this.clientID = clientID;
}
public String getEstimatedDate()
{
return estimatedDate;
}
public void setEstimatedDate(String estimatedDate)
{
this.estimatedDate = estimatedDate;
}
public String getTime()
{
return time;
}
public void setTime(String time)
{
this.time = time;
}
public String getVisitType()
{
return visitType;
}
public void setVisitType(String visitType)
{
this.visitType = visitType;
}
public String getVisit()
{
return visit;
}
public void setVisit(String visit)
{
this.visit = visit;
}
public String getServiceType()
{
return serviceType;
}
public void setServiceType(String serviceType)
{
this.serviceType = serviceType;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getArea()
{
return area;
}
public void setArea(String area)
{
this.area = area;
}
public String getJobTitle()
{
return jobTitle;
}
public void setJobTitle(String jobTitle)
{
this.jobTitle = jobTitle;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
public String getContactName()
{
return contactName;
}
public void setContactName(String contactName)
{
this.contactName = contactName;
}
public String getContactID()
{
return contactID;
}
public void setContactID(String contactID)
{
this.contactID = contactID;
}
public String getContactMobile()
{
return contactMobile;
}
public void setContactMobile(String contactMobile)
{
this.contactMobile = contactMobile;
}
public String getEstimatedHours()
{
return estimatedHours;
}
public void setEstimatedHours(String estimatedHours)
{
this.estimatedHours = estimatedHours;
}
public String getActualStartDate()
{
return actualStartDate;
}
public void setActualStartDate(String actualStartDate)
{
this.actualStartDate = actualStartDate;
}
public String getActTime()
{
return actTime;
}
public void setActTime(String actTime)
{
this.actTime = actTime;
}
public String getActualFinishDate()
{
return actualFinishDate;
}
public void setActualFinishDate(String actualFinishDate)
{
this.actualFinishDate = actualFinishDate;
}
public String getActualFinishTime()
{
return actualFinishTime;
}
public void setActualFinishTime(String actualFinishTime)
{
this.actualFinishTime = actualFinishTime;
}
public String getActualDuration()
{
return actualDuration;
}
public void setActualDuration(String actualDuration)
{
this.actualDuration = actualDuration;
}
public String getJobPriority()
{
return jobPriority;
}
public void setJobPriority(String jobPriority)
{
this.jobPriority = jobPriority;
}
public String getCompletionNotes()
{
return completionNotes;
}
public void setCompletionNotes(String completionNotes)
{
this.completionNotes = completionNotes;
}
public String getJobDescription()
{
return jobDescription;
}
public void setJobDescription(String jobDescription)
{
this.jobDescription = jobDescription;
}
public String getSpecialInstruction()
{
return specialInstruction;
}
public void setSpecialInstruction(String specialInstruction)
{
this.specialInstruction = specialInstruction;
}
public String getStatusID()
{
return statusID;
}
public void setStatusID(String statusID)
{
this.statusID = statusID;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getIsSend()
{
return isSend;
}
public void setIsSend(String isSend)
{
this.isSend = isSend;
}
public String getIsSeen()
{
return isSeen;
}
public void setIsSeen(String isSeen)
{
this.isSeen = isSeen;
}

}

最佳答案

我在很多地方使用了以下内容。

将以下内容添加到适配器:

private List<JobsGetSet> mOriginalValues;
private Filter mFilter;
private final Object mLock = new Object();

然后将 getFilter 更改为

@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new JobFilter();
}
return mFilter;
}

然后将JobFilter定义为内部类:

private class JobFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();

if (mOriginalValues == null) {
synchronized (mLock) {
mOriginalValues = new ArrayList<JobsGetSet>(rowItems);
}
}

if (constraint == null || constraint.length() == 0) {
synchronized (mLock) {
results.values = mOriginalValues;
results.count = mOriginalValues.size();
}
}
else {
String con = constraint.toString();
List<JobsGetSet> values = mOriginalValues;
int count = values.size();

List<JobsGetSet> newValues = new ArrayList<JobsGetSet>(count);

for (int i = 0; i < count; i++) {
JobsGetSet data = values.get(i);

//Here is where you compare the constraint(title/address) with values in your JobsGetSet, or any other logic
String s = data.getTitle();
if (s.equalsIgnoreCase(con)) {
newValues.add(data);
}
}

results.values = newValues;
results.count = newValues.size();
}

return results;
}

@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
// noinspection unchecked
mObjects = (List<JobsGetSet>) results.values;
notifyDataSetChanged();
clear();
addAll(mObjects);
if (results.count > 0) {
notifyDataSetChanged();
}
else {
}
}
}

然后要使用它,你可以这样做

mJobAdapater.getFilter().filter(stringToFilterBy);

抱歉,但我可能错过了重命名一些变量,但这应该可以节省您花在我弄清楚它上的时间。

关于java - 如何在 BaseAdapter 上实现 Filterable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com