This question already has an answer here:
- List View Filter Android 2 answers
I have successfully make a listview from my sqlite DB with 4 items in a list item is it possible to add a filter system to short the list?
Here is my custom list adapter
import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.rupomkhondaker.sonalibank.R;
import com.rupomkhondaker.sonalibank.model.ContactItem;
public class PhoneListAdapter extends BaseAdapter {
private ArrayList<ContactItem> listData;
private LayoutInflater layoutInflater;
public PhoneListAdapter(Activity context, ArrayList<ContactItem> listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_white_text, null);
holder = new ViewHolder();
holder.nameView = (TextView) convertView.findViewById(R.id.name_title);
holder.phoneView = (TextView) convertView.findViewById(R.id.list_sub_phone);
holder.mobileView = (TextView) convertView.findViewById(R.id.list_sub_mobile);
holder.emailView = (TextView) convertView.findViewById(R.id.list_sub_email);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ContactItem contactItem = listData.get(position);
holder.nameView.setText(contactItem.getName());
holder.phoneView.setText("Ph: " + contactItem.getPhone());
holder.mobileView.setText("Mob: " +contactItem.getMobile());
holder.emailView.setText("Email: " +contactItem.getEmail());
return convertView;
}
static class ViewHolder {
TextView nameView;
TextView phoneView;
TextView mobileView;
TextView emailView;
}
}
And My Fragment where the list comes up
import android.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.rupomkhondaker.sonalibank.adapter.PhoneListAdapter;
import com.rupomkhondaker.sonalibank.model.ContactItem;
import java.util.ArrayList;
public class GMOFragment extends Fragment {
public GMOFragment(){}
private static String DB_NAME ="SBLdata.db";// Database name
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_contact, container, false);
final ArrayList<ContactItem> listData = getListData();
final ListView listView = (ListView) rootView.findViewById(R.id.gmolistView);
listView.setAdapter(new PhoneListAdapter(getActivity(), listData));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ContactItem contactData = (ContactItem) listView.getItemAtPosition(position);
Intent intent = new Intent(getActivity(), ContactDetail.class);
intent.putExtra("DATA_KEY", contactData);
startActivity(intent);
}
});
//Changing Action-bar Title
getActivity().setTitle("GM Office Contact List");
return rootView;
}
private ArrayList<ContactItem> getListData() {
ArrayList<ContactItem> listMockData = new ArrayList<ContactItem>();
DataBaseHelper empClick = new DataBaseHelper(getActivity(), DB_NAME);
Cursor cursor = empClick.getDetailsofGMO();
ContactItem newsData = null;
while (cursor.moveToNext()) {
newsData = new ContactItem();
newsData.setName(cursor.getString(0));
newsData.setPhone(cursor.getString(1));
newsData.setMobile(cursor.getString(2));
newsData.setEmail(cursor.getString(3));
listMockData.add(newsData);
}
return listMockData;
}
}
Aucun commentaire:
Enregistrer un commentaire