Android Iam正在创建包含搜索文本的联系人应用程序及其下方包含所有联系人的ListView
Iam正在创建包含搜索文本的联系人应用程序及其下方的ListView,该列表视图在单击任何列表项时包含所有联系人在另一个“活动”中显示所有项目数据,但错误是当我搜索名称并在单击时给我指定的用户给我其他用户的数据Android Iam正在创建包含搜索文本的联系人应用程序及其下方包含所有联系人的ListView,android,Android,Iam正在创建包含搜索文本的联系人应用程序及其下方的ListView,该列表视图在单击任何列表项时包含所有联系人在另一个“活动”中显示所有项目数据,但错误是当我搜索名称并在单击时给我指定的用户给我其他用户的数据 public class showAllContacts extends AppCompatActivity { String name, phone, mail; ArrayList<listObject> arr = new ArrayList<listObj
public class showAllContacts extends AppCompatActivity {
String name, phone, mail;
ArrayList<listObject> arr = new ArrayList<listObject>();
ListView listView;
EditText search;
ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_all_contacts);
listView = (ListView) findViewById(R.id.list_item);
search=(EditText)findViewById(R.id.search);
//get intent and data that users enter in class entercontacts.java
Intent i = getIntent();
Bundle b = i.getExtras();
//create object of database connection class
DbConnection dp = new DbConnection(showAllContacts.this);
/*
if bundle carry data insert it to database
*/
if (b != null) {
name = b.getString("name");
phone = b.getString("phone");
mail = b.getString("mail");
dp.InsertRowUser(name, phone, mail);
}
//get data from databse and put it in array
arr = dp.getAllRecords();
adapter = new ListAdapter(showAllContacts.this, R.layout.list_design, arr);
listView.setAdapter(adapter);
/*
if user click item in contacts ListView go to userpage class with array(arr) that carry data
*/
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(showAllContacts.this, userPage.class);
Bundle bundle = new Bundle();
bundle.putSerializable("userData", (Serializable) arr);
bundle.putInt("postion", position);
intent.putExtra("bundle", bundle);
startActivity(intent);
}
});
/*
if user search in the search text
*/
search.addTextChangedListener(new TextWatcher(){
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// showAllContacts.this.adapter.getFilter().filter(s);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int textlength=s.length();
ArrayList<listObject>listObjects=new ArrayList<listObject>();
for (listObject c:arr){
if(textlength<=c.Name.length()){
if(c.Name.toLowerCase().contains(s.toString().toLowerCase())){
listObjects.add(c);
}
}
}
adapter = new ListAdapter(showAllContacts.this, R.layout.list_design, listObjects);
listView.setAdapter(adapter);
}
@Override
public void afterTextChanged(Editable s) {
}
});
} catch (NullPointerException E) {
} catch (Exception e) {
}
}
}
public类showAllContacts扩展appcompative活动{
字符串名称、电话、邮件;
ArrayList arr=新的ArrayList();
列表视图列表视图;
编辑文本搜索;
列表适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
试一试{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u显示所有联系人);
listView=(listView)findViewById(R.id.list\u项);
search=(EditText)findViewById(R.id.search);
//获取用户在entercontacts.java类中输入的意图和数据
Intent i=getIntent();
Bundle b=i.getExtras();
//创建数据库连接类的对象
DbConnection dp=新的DbConnection(showAllContacts.this);
/*
如果捆绑包携带数据,请将其插入数据库
*/
如果(b!=null){
name=b.getString(“name”);
phone=b.getString(“phone”);
mail=b.getString(“邮件”);
dp.InsertRowUser(姓名、电话、邮件);
}
//从数据库中获取数据并将其放入数组中
arr=dp.getAllRecords();
适配器=新列表适配器(showAllContacts.this,R.layout.list\u design,arr);
setAdapter(适配器);
/*
如果用户单击contacts列表视图中的项,则转到带有数组(arr)的userpage类,该数组包含数据
*/
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向意向=新意向(showAllContacts.this,userPage.class);
Bundle=新Bundle();
bundle.putSerializable(“userData”,(Serializable)arr);
bundle.putInt(“位置”,位置);
意向。额外(“捆绑”,捆绑);
星触觉(意向);
}
});
/*
如果用户在搜索文本中搜索
*/
search.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//showAllContacts.this.adapter.getFilter().filter;
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
int textlength=s.length();
ArrayListObjects=新的ArrayList();
for(listObject c:arr){
if(textlength将contact类设置为可序列化,并将接口设置为listadapter,如下代码..listadapter类
onItemClickListner onItemClickListner;
public void setOnItemClickListner(CommentsAdapter.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner {
void onClick(Contact contact);//pass your object types.
}
@Override
public View getView(final int position, final View convertView, ViewGroup parent) {
Contact contact=contactList.get(position);
final LayoutInflater inflater = ((Activity) context).getLayoutInflater();
final View outerContiner = inflater.inflate(R.layout.table_layout, parent, false);// define your layout
TextView text = (TextView) outerContiner.findViewById(R.id.tlTvName);
TextView barcode = (TextView) outerContiner.findViewById(R.id.tlTvBar);
text.setText(data.get(position).itemName);
barcode.setText(data.get(position).barcod);
outerContiner.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onClick(contact);
}
});
return outerContiner;
}
然后在将适配器绑定到listview之后,调用下面的代码并放入意图代码
adapter.setOnItemClickListner(new CommentsAdapter.onItemClickListner() {
@Override
public void onClick(Contact contact) {
// here put intent code and get contact detail to click listview item.
adapter.notifyDataSetChanged();
}
});
你犯了什么错误?