java自定义ListView设计与水平CardView
- 在我的一个应用程序中,我对最喜欢的联系人进行了以下设计。我正在从手机中提取最喜欢的联系人,并使用自定义列表适配器将其显示为附加设计。但问题是,这两个部分的接触都是重复的。例如,如果有八个常用联系人,则应通过水平设置联系人来显示四行。但它会获取所有八个联系人,并在每一行显示相同的联系人李>
我希望我澄清了我的观点,我想要的。这是我的代码,我知道我做错了什么。我尝试过很多方法,但都不管用
片段收藏夹
public class FragmentFavourites extends Fragment{
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> number = new ArrayList<String>();
ListView f_list;
String starred_id,starred_name,starred_number;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_favourites, container, false);
f_list=(ListView)rootView.findViewById(R.id.fav_list);
name.clear();
number.clear();
getFavourites();
return rootView;
}
public void getFavourites()
{
ContentResolver cr = getActivity().getApplicationContext().getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
new String[]{ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
ContactsContract.Contacts.STARRED}, ContactsContract.Contacts.STARRED + "='1'", null,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC");
while (cur.moveToNext()) {
starred_id = cur.getString(0);
starred_name = cur.getString(1);
name.add(starred_name);
starred_number=getFavouriteNumber(starred_id);
number.add(starred_number);
}
cur.close();
FavouriteAdapter fa=new FavouriteAdapter(getActivity(),name,number);
f_list.setAdapter(fa);
}
public String getFavouriteNumber(String contactId)
{
ContentResolver cr = getActivity().getApplicationContext().getContentResolver();
String phone=null;
Cursor cursor = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{contactId}, null);
while (cursor.moveToNext())
{
phone=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
cursor.close();
return phone;
}
}
收藏夹适配器
public class FavouriteAdapter extends BaseAdapter{
Activity context;
ArrayList<String> f_name,f_number;
//String[] name1,name2,number1,number2;
TextView tf_name,tf_number,main_letter,tf_name_t,tf_number_t,main_letter_t;
int i;
int flag=1,count;
FavouriteAdapter(Activity context, ArrayList<String> fav_name, ArrayList<String> fav_number){
this.context=context;
this.f_name=fav_name;
this.f_number=fav_number;
}
@Override
public int getCount() {
return f_name.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
LayoutInflater l=context.getLayoutInflater();
View row=l.inflate(R.layout.favourite_adapter_layout,null,true);
/*name1=new String[f_name.size()];
name2=new String[f_name.size()];
number1=new String[f_number.size()];
number2=new String[f_number.size()];*/
main_letter=(TextView)row.findViewById(R.id.main_letter);
tf_name=(TextView) row.findViewById(R.id.favName);
tf_number=(TextView)row.findViewById(R.id.favNumber);
tf_name_t=(TextView)row.findViewById(R.id.favName_t);
tf_number_t=(TextView)row.findViewById(R.id.favNumber_t);
main_letter_t=(TextView)row.findViewById(R.id.main_letter_t);
count=f_name.size();
try {
if(flag==1)
{
for (int i=0;i<f_name.size();i++){
if(i==count) {
flag=0;
break;
}
if(i%2==0){
System.out.println("i in One: "+i);
tf_name.setText(f_name.get(position));
tf_number.setText(f_number.get(position));
if (!f_name.get(position).isEmpty()) {
String init = f_name.get(position).substring(0, 1);
main_letter.setText(init);
}
}
else{
System.out.println("i in Two: "+i);
tf_name_t.setText(f_name.get(position));
tf_number_t.setText(f_number.get(position));
if (!f_name.get(position).isEmpty()) {
String init = f_name.get(position).substring(0, 1);
main_letter_t.setText(init);
}
}
}}}
catch (Exception e){
System.out.println(e);
}
return row;
}
}
共 (0) 个答案