有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java自定义ListView设计与水平CardView

  • 在我的一个应用程序中,我对最喜欢的联系人进行了以下设计。我正在从手机中提取最喜欢的联系人,并使用自定义列表适配器将其显示为附加设计。但问题是,这两个部分的接触都是重复的。例如,如果有八个常用联系人,则应通过水平设置联系人来显示四行。但它会获取所有八个联系人,并在每一行显示相同的联系人
  • 我希望我澄清了我的观点,我想要的。这是我的代码,我知道我做错了什么。我尝试过很多方法,但都不管用

    Layout Design

片段收藏夹

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) 个答案