
片段宠儿
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;
}
}FavouriteAdapter
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;
}
}发布于 2017-03-27 07:20:53
我用GridView代替ListView来解决我的问题。这是我的代码。希望它能帮到别人。
FragmentFavourites
public class FragmentFavourites extends Fragment{
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> number = new ArrayList<String>();
GridView 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=(GridView) rootView.findViewById(R.id.grid);
name.clear();
number.clear();
try
{
new GetFavouriteTask().execute();
}
catch(Exception e)
{
Toast.makeText(getActivity(),"Problem Loading Contacts",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
return rootView;
}
public class GetFavouriteTask extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
getFavourites();
return null;
}
@Override
protected void onPostExecute(Void result)
{
try {
FavouriteAdapter fa=new FavouriteAdapter(getActivity(),name,number);
f_list.setAdapter(fa);
}
catch(Exception e){
System.out.println(e);
}
}
}
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();
}
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;
}
}FavouriteAdapter
public class FavouriteAdapter extends BaseAdapter{
Activity context;
ArrayList<String> f_name,f_number;
TextView tf_name,tf_number,main_letter;
int i;
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);
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);
try {
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);
}}
catch (Exception e){
System.out.println(e);
}
return row;
}
}fragment_favourites.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:numColumns="2"/>
</RelativeLayout>favourite_adapter_layout
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardElevation="6dp"
app:cardUseCompatPadding="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
app:cardBackgroundColor="#02605c"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="60dp"
android:layout_gravity="center"
android:padding="5dp"
android:id="@+id/main_letter"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="15dp"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:id="@+id/favName"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:id="@+id/favNumber"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</RelativeLayout>https://stackoverflow.com/questions/43014981
复制相似问题